Création d'une macro
Eme
-
enilemef Messages postés 3 Statut Membre -
enilemef Messages postés 3 Statut Membre -
Bonjour,
Je travaille sur un document excel afin de faire de la facturation et je voudrais savoir si il est possible de faciliter cette facturation à l'aide d'une macro.
Je m'explique, mon document se compose :
- d'une première feuille qui contient la base de donnée avec les renseignements des personnes à facturer, nom, adresse ...
- d'une seconde feuille qui est ma facture mise en page et prête à imprimer, lorsque je rentre le nom d'une personne dans une cellule particulière la totalité de la facture se remplie selon la base de donnée, à l'aide de la fonction =recherchev liée à la feuille 1.
Mon idée serait de créer une macro qui ferait descendre d'une ligne à la fois la première colonne de ma première feuille et d'affecter cette macro a une forme de flèche sur ma feuille n°2.
Je ne sais pas si c'est très clair, mais lors de ma facturation je rentre la formule ='Feuille1'!A1 qui correspond au premier nom de ma liste, l'idée serait qu'en appuyant sur un "bouton" la formule devienne ='Feuille1'!A2 et ainsi de suite, tout en restant sur la feuille de facturation, pour ne pas avoir à changer de feuille à chaque fois ce qui me fait perdre un temps fou.
C'est la première fois que je pose une question ici, j'espère avoir été assez claire et que quelqu'un arrivera à résoudre mon problème.
Merci beaucoup d'avance
Je travaille sur un document excel afin de faire de la facturation et je voudrais savoir si il est possible de faciliter cette facturation à l'aide d'une macro.
Je m'explique, mon document se compose :
- d'une première feuille qui contient la base de donnée avec les renseignements des personnes à facturer, nom, adresse ...
- d'une seconde feuille qui est ma facture mise en page et prête à imprimer, lorsque je rentre le nom d'une personne dans une cellule particulière la totalité de la facture se remplie selon la base de donnée, à l'aide de la fonction =recherchev liée à la feuille 1.
Mon idée serait de créer une macro qui ferait descendre d'une ligne à la fois la première colonne de ma première feuille et d'affecter cette macro a une forme de flèche sur ma feuille n°2.
Je ne sais pas si c'est très clair, mais lors de ma facturation je rentre la formule ='Feuille1'!A1 qui correspond au premier nom de ma liste, l'idée serait qu'en appuyant sur un "bouton" la formule devienne ='Feuille1'!A2 et ainsi de suite, tout en restant sur la feuille de facturation, pour ne pas avoir à changer de feuille à chaque fois ce qui me fait perdre un temps fou.
C'est la première fois que je pose une question ici, j'espère avoir été assez claire et que quelqu'un arrivera à résoudre mon problème.
Merci beaucoup d'avance
2 réponses
-
Bonjour,
Dans ta feuille 2, insert un flèche. Ensuite clic droit sur ta flèche puis "Affecter une macro...", "Nouvelle"
Puis colle ça :
Sub Descendre()
Sheets("Feuil1").Select 'Selection de la feuille 1
Rows("1:1").Select 'Selection de la ligne 1
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 'Insertion d'une nouvelle ligne
Range("A1").Select
Sheets("Feuil2").Select 'Selection de la feuille 2
End Sub
Si un message du style : "L'indice n'appartient pas à la sélection, modifie le nom des feuilles (Feuil1, Feuil2) entre guillemets dans la macro.
J'espère que c'est bien ce que tu souhaitais ;)-
Merci de votre réponse, je viens d'essayer mais ce n'est pas tout à fait ce dont je parlais, je pense que j'ai du mal à expliquer mon idée.
L'idée est de se placer dans la colonne 1 et de descendre de ligne simplement, la feuille 1 est remplie de données et je voudrais qu'en cliquant sur ma forme, la cellule sélectionnée sur ma première feuille descende.
En gros, que ma cellule dans la feuille 2 passe de =Feuille 1 A1 à = Feuille 1 A2 et ainsi de suite -
-
Merci pour votre aide, j'ai trouvé une solution
Sub Facture()
Dim Plage As Range, C As Range
With Sheets("BDD 2018")
Set Plage = .Range("A2", .Cells(.Rows.Count, 1).End(xlUp))
End With
With Sheets("Facture")
If .[E6] = "" Then
.[E6].Value = Plage(1, 1)
Else
Set C = Plage.Find(.[E6])
If C Is Nothing Then
MsgBox "Saisie incorrecte"
Exit Sub
End If
Set C = C.Offset(1)
If C = "" Then
MsgBox "Traitement terminé"
Exit Sub
Else
.[E6] = C.Value
End If
End If
End With
End Sub
-
-
Bonjour à tous les deux
Pas très clair, et si macro il doit y avoir, il faut connaitre la structure exacte des données
Peux tu envoyer un bout de ton fichier sur cjoint.com et joindre le lien obtenu à ton prochain message. N'oublies pas d'y ajouter des explications et des exemples de résultat attendu
1) Tu vas dans https://www.cjoint.com/
2) Tu cliques sur [Parcourir] pour sélectionner ton fichier
3) Tu descends en bas de la page pour cliquer sur [Créer le lien Cjoint]
4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien
en bleu souligné ; tu le sélectionnes et tu fais "Copier"
5) Tu reviens dans ta discussion sur CCM, et dans ton message de réponse tu fais "Coller".
Cdlmnt