Bonjour,
Voici mon besoin:
Afin de remplir automatiquement un formulaire à partir des données figurant dans une feuille A, en cliquant simplement sur le n° de ligne de cette feuille, la ligne est copiée dans la feuille B et, par calcul (=) les cellules sont remplies dans le formulaire (feuille C)
Par exemple: la cellule F5 de la feuille A est recopiée par la macro en F5 de la feuille B et dans la feuille C (formulaire), c'est la case A4 qui est égale à F5 de la feuille B (formule: =FeuilleB!F5)
Voici cette macro:
L'étape suivante est d'imprimer autant de formulaires que de lignes dans la feuille A (on pourrait le faire via le publipostage de Word par exemple, mais il faut rester dans le contexte Excel).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Private Sub Worksheet_SelectionChange(ByVal Cible As Range) If (Cible.Rows.Count = 1) * (Cible.Columns.Count = Me.Columns.Count) Then With Feuil7 Cible.EntireRow.Copy Destination:=.Cells(3, 1) End With Sheets("Feuille C").Select End If End Sub
Voici donc le principe que je voudrais produire par macro:
Avec le même procédé que le remplissage automatique ci-dessus:
- sélection de la première ligne de données,
- impression de la feuille C
- sélection de la ligne suivante
- impression ...
et ce jusqu'à ce que toutes les lignes de la feuille A non vides aient été balayées.
J'ai écrit le script suivant, mais il buggeerreur de compilation, nombre d'arguments incorrect ou affectation de propriété incorrectePouvez-vous m'aider ? (en m'expliquant ce qui ne va pas, merci)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 Sub Impr_Totale() Dim Cible As Range Sheets("FeuilleA").Select i = 3 While Sheets("FeuilleA").Cells(i, 1).Value <> "" Cible.Rows.Count = i ' Rows("1:" & i).Select With Feuil7 Cible.EntireRow.Copy Destination:=.Cells(3, 1) ' i.EntireRow.Copy Destination:=.Cells(3, 1) End With Sheets("FeuilleC").Select ActiveSheet.PrintOut Copies:=1 i = i + 1 Wend End Sub
Partager