Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

pascalp231

excel

Messages recommandés

bonjour a tous voila je voudrais savor s'il est possible de faire cela avec excel et si oui comment .

 

Voila je voudrais mettre dans un classeur tout les mouvement de plusieur compte acheteur (par exemple 5) toutefois les mouvement depot et prise sont melangés. Donc dans un premier temps je voudrais faire en sorte (avec une macro si c'est possible) de trier les 5 comptes et de faire en sorte qu'il se place dans des feuilles differentes que j'aurais renommer au prealable.

Ensuite je voudrais pouvoir faire en sorte que si dans une colonne (par exemple la colonne C) il y a marqué "prise" alors dans les colonnes D, E, F le montant s'inscrive avec le signe - devant (afin que lorsque j'additionne toutes les colonnes celle ci ce soustraye automatiquement (puisqu'il y a un signe - devant le chiffre).

 

A votre avis cela est il possible ou dois je acheter un autre logiciel ?

Merci d'avance pour votre/ vos reponse(s)

Comme cet exemple :

http://www.imagecabin.com/images/88t15236.jpg

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui, il y a moyen avec une macro de déplacer les lignes dans des autres feuilles.

 

Tu crées une boucle qui s'exécute tant que la 1ère cellule de la ligne sélectionnée(exemple: ax (où x est le n° de la ligne)) n'est pas vide; tu lui dit de créer une feuille du nom du contenu de la cellule (de la colonne C ?) sauf si cette feuille existe déjà (-> faire une vérif); tu reviens à la cellule de départ (a1); tu fais une sélection de cette cellule jusqu'à la cellule non vide; tu fais un "copier" de cette ligne; tu sélectionne la feuille où tu veux "coller" les infos; tu lui dit d'aller à la 1ère cellule de la line en dessous qui doit contenir des données; tu incrtémentes x + 1

tu reviens à ta feuille de départ

tu ferme la boucle

 

normalement, comme tu à incrémenté de 1, il va se mettre sur la cellule a2

(a(x+1))

 

Pour "prise", soit tu fais une formule "manuellement" dans ton tableau (genre si c1 = "prise" alors nbre négatif), soit tu l'inclus dans la macro (alors, tu vérifies le contenu de la cellule).

 

Ce n'est pas compliqué à éaliser, mais difficile à expliquer par écrit. J'espère n'avoir pas été trop compliqué ?!

Partager ce message


Lien à poster
Partager sur d’autres sites

:P merci pour tes explication liliv mais j'ai rien compris tu pourrais me faire un exemple de la macro que je dois créer stp afin que je puisse realiser la meme chose mais sur 100 lignes de 5 colonnes car je debute dans la conception de macro et l'utilisation excel et la je suis completement perdus.

Merci d'avance

Partager ce message


Lien à poster
Partager sur d’autres sites
:P  merci pour tes explication liliv mais j'ai rien compris tu pourrais me faire un exemple de la macro que je dois créer stp afin que je puisse realiser la meme chose mais sur 100 lignes de 5 colonnes car je debute dans la conception de macro et l'utilisation excel et la je suis completement perdus.

Merci d'avance

556075[/snapback]

 

 

Salut

Pour ton problème "prise" tu dois écrire la fonction logique suivante =SI($C2="prise";D2*-1;D2)

Attention, comme tes cellules D2, E2 et F2 sont déjà remplies avec les données de tes comptes il faut que tu colles cette formule dans 3 autres cellules (par exemple en G2, H2,I2) pour faire tes calculs.

Telle quelle est écrite cette formule peut se copier vers la droite puis vers le dessous .

C'est assez simple.

Partager ce message


Lien à poster
Partager sur d’autres sites

merci phil76 pour cet exemple mais pour l'instant ce qui me pose le plus de probleme c'est de trier chaque mouvement pour qu'il les copient dans les feuilles correspondantes.

Modifié par pascalp231

Partager ce message


Lien à poster
Partager sur d’autres sites

Voici le code de la macro:

 

Sub Macro1()

 

Dim NomFeuil

Dim NumLign

 

'Définit le type de variables. Ce n'est pas nécessaire, mais ça fait plus mieux :P !

 

'Les lignes qui suivent vont supprimer les feuilles de mouvement qui existent déjà

 

Sheets("mouvements").Activate

Range("a1").Activate

 

'on sélectionne la feuille qui contient les noms des mouvements

 

'on crée une boucle qui recherche tous les noms; il exécute cette boucle jusqu'à ce que

'il rencontre une celluile vide

 

Do Until ActiveCell.Value = ""

NomFeuil = ActiveCell.Value 'le contenu de la cellule est "copié" dans la variable NomFeuil

Sheets(NomFeuil).Select

Application.DisplayAlerts = False

ActiveWindow.SelectedSheets.Delete

Application.DisplayAlerts = True

 

'sélectionne la feuille correspondante et la supprime (en empêchant le message de

'confirmation d'apparaître)

 

Sheets("mouvements").Activate 'revient à la feuille "mouvements"

 

ActiveCell.Delete 'supprime le contenu de la cellule active

 

ActiveCell.Offset(1, 0).Activate 'se met sur la cellule du dessous

 

Loop 'revient au début de la boucle

 

Sheets("Feuil1").Select 'Sélectionne la feuille ("Feuil1") (tu peux renommer cette feuille,

'mais alors, tu dois renommer tous les "Feuil1" de cette macro

 

NumLign = 1 ' variable du n° de la ligne (si tu veux commencer à une autre ligne, tu mets le n° correspondant)

 

Cells(NumLign, 1).Activate 'sélectionne la cellule de la 1ère ligne de la 1ère colonne (si tu veux commencer

'à la colonne "b", tu remplaces 1 par 2 ou c = 3 ....

 

Do While ActiveCell.Value <> ""

' ouvre une boucle et l'exécute tant que la cellule sélectionnée n'est pas vide

 

NomFeuil = Cells(NumLign, 2).Text ' variable contenant le nom (où le nom se trouve dans

'la colonne "b" (= 2); si il se trouvait dans la colonne "c",

'remplaces 2 par 3, ...

 

Sheets("mouvements").Activate

Range("a1").Activate

Do Until ActiveCell.Value = ""

 

'vérifie dans la feuille "mouvements" si le nom du mouvement existe déjà

If ActiveCell.Value = NomFeuil Then

Sheets(NomFeuil).Activate

GoTo 1

 

'Si le nom existe déjà, active la feuille correspondante

'et va à la ligne 1

 

Else: ActiveCell.Offset(1, 0).Select

 

'sinon, il va sur la cellule d'en-dessous pour vérifier son contenu

 

End If

Loop

ActiveCell.Offset.Value = NomFeuil

 

'si il n'a pas trouvé le nom, il l'ajoute et crée la feuille correspondante

 

Sheets.Add

ActiveSheet.Name = NomFeuil

 

1 Sheets("Feuil1").Activate

ActiveCell.EntireRow.Copy 'sélectionne la ligne où se trouve la cellule active et fait un "copy"

 

Sheets(NomFeuil).Select

ActiveSheet.Paste 'colle la ligne

ActiveCell.Offset(1, 0).Select 'va à la cellule du dessous

Sheets("Feuil1").Activate 'revient à la "Feuil1"

NumLign = NumLign + 1 'incrémente la variable de 1

Cells(NumLign, 1).Activate

Loop

End Sub

Partager ce message


Lien à poster
Partager sur d’autres sites

merci a tous pour votre aide je vais essayer cela et je vous tiendrais au courant.

A+

 

PS au passage j'ai un autre probleme toutes les cellules du tableau contiennent un espace devant et un espace derriere les chiffres et donc je voudrais savoir s'il est possible de les supprimer autrement qu'a la main car pour un tableau de 5 colonnes par 100 lignes j'ai pas finis surtout que tout les mois je vais devoir le refaire. Merci d'avance

Modifié par pascalp231

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

  • En ligne récemment   0 membre est en ligne

    Aucun utilisateur enregistré regarde cette page.

×