Ecriture macro avec incrémentation de ligne
Résolu
Edaine
Messages postés
63
Statut
Membre
-
Christof422 Messages postés 990 Statut Membre -
Christof422 Messages postés 990 Statut Membre -
Bonjour,
Je vais essayer d'être le plus explicite possibel !
J'ai commencé une macro,
je me suis aidée de l'enregistreur,
Je voudrai que ma macro me permette de copier coller une parte de feuille sur une autre,
C'est à dire que quand j'appuie sur un bouton ou que je déclenche ma macro, elle me colle cette partie de feuille A à partir de la cellule A1 de la feuille B, et qu'ensuite si je redéclenche plus tard cette macro, qu'elle copie en A35..
J'avais commencé par définir quelques variables mais je fais des erreurs de "syntaxtes" et autre, comme je démarre vba.. Du coup j'essaie de m'aider du code suivant pour écrire mais je ne m'en sors pas;
Si vous aviez des conseils de rédaction ou autre, celà m'aiderai grandement !
Merci d'avance,
Je vais essayer d'être le plus explicite possibel !
J'ai commencé une macro,
je me suis aidée de l'enregistreur,
Je voudrai que ma macro me permette de copier coller une parte de feuille sur une autre,
C'est à dire que quand j'appuie sur un bouton ou que je déclenche ma macro, elle me colle cette partie de feuille A à partir de la cellule A1 de la feuille B, et qu'ensuite si je redéclenche plus tard cette macro, qu'elle copie en A35..
J'avais commencé par définir quelques variables mais je fais des erreurs de "syntaxtes" et autre, comme je démarre vba.. Du coup j'essaie de m'aider du code suivant pour écrire mais je ne m'en sors pas;
Sub FeuillePalette2()
Dim LignFeuille As Long
Dim FeExtra As Worksheet
Dim FeType As Worksheet
Dim FePalette As Worksheet
Set FeExtra = ThisWorkbook.Sheets("Extraction cia flu")
Set FeType = ThisWorkbook.Sheets("Feuille Type")
Set FePalette = ThisWorkbook.Sheets("Palettes contrôlées")
FeType.Range("A1:F39").Copy
FePalette.Range("A1").Select
ActiveSheet.Paste
Sheets("Palettes contrôlées").Select
ActiveWindow.ScrollRow = 10
Range("A39").Select
ActiveSheet.Paste
ActiveWindow.ScrollRow = 11
ActiveWindow.ScrollRow = 18
ActiveWindow.ScrollRow = 21
ActiveWindow.ScrollRow = 22
ActiveWindow.ScrollRow = 23
ActiveWindow.ScrollRow = 24
ActiveWindow.ScrollRow = 23
ActiveWindow.ScrollRow = 18
ActiveWindow.ScrollRow = 17
ActiveWindow.ScrollRow = 16
ActiveWindow.ScrollRow = 15
ActiveWindow.ScrollRow = 14
ActiveWindow.ScrollRow = 13
ActiveWindow.ScrollRow = 12
ActiveWindow.ScrollRow = 11
ActiveWindow.ScrollRow = 10
ActiveWindow.ScrollRow = 9
ActiveWindow.ScrollRow = 8
ActiveWindow.ScrollRow = 7
ActiveWindow.ScrollRow = 6
ActiveWindow.ScrollRow = 5
ActiveWindow.ScrollRow = 4
ActiveWindow.ScrollRow = 3
Sheets("Feuille Type").Select
Range("B11:E29").Select
Range("E29").Activate
Application.CutCopyMode = False
Selection.ClearContents
ActiveWindow.ScrollRow = 9
ActiveWindow.ScrollRow = 8
ActiveWindow.ScrollRow = 7
ActiveWindow.ScrollRow = 6
ActiveWindow.ScrollRow = 5
ActiveWindow.ScrollRow = 4
ActiveWindow.ScrollRow = 3
ActiveWindow.ScrollRow = 2
ActiveWindow.ScrollRow = 1
Range("D3").Select
Selection.ClearContents
Range("C6").Select
Selection.ClearContents
Range("E8").Select
Selection.ClearContents
End Sub
Si vous aviez des conseils de rédaction ou autre, celà m'aiderai grandement !
Merci d'avance,
A voir également:
- Ecriture macro avec incrémentation de ligne
- Partage de photos en ligne - Guide
- Écriture facebook - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Ecriture en gras - Guide
- Écriture miroir en ligne - Guide
8 réponses
Ces 3 lignes doivent suffire
Avec ca tu devrai pouvoir arriver a tes fins.
Le premier pas vers la solution est la recherche. Notre ami Google connaît sûrement la solution...
FeType.Range("A1:F39").Copy 'copie les cellule de A1 à F39 de la feuille Fetype
FePalette.Range("A1").Select 'selectionne la cellule A1 de la feuille Fepalette
ActiveSheet.Paste 'Colle la copie sur la feuille Fepalette (feuille active)
Avec ca tu devrai pouvoir arriver a tes fins.
Le premier pas vers la solution est la recherche. Notre ami Google connaît sûrement la solution...
Bon j'ai essayé,
Ca fonctionne bien, mais je n'arrive pas à intégrer mon incrémentation...
J'ai essayé plein de trucs différents.
J'ai tenté avec un If mais je ne sais pas trop comment faire.
:s
J'étais partie sur un truc du style :
Si la cellule C3 n'est pas vide alors, il faut coller à LignFeuille + 39,
J'ai essayé de différente façon, mais je n'ai toujours pas saisi la logique du vba ... Dès que je colle, ça colle à l'infini à partir de LignFeuille + 39 ...
Comment faire pour dire " Coller une seule fois " ?
Ca fonctionne bien, mais je n'arrive pas à intégrer mon incrémentation...
J'ai essayé plein de trucs différents.
J'ai tenté avec un If mais je ne sais pas trop comment faire.
:s
J'étais partie sur un truc du style :
Si la cellule C3 n'est pas vide alors, il faut coller à LignFeuille + 39,
J'ai essayé de différente façon, mais je n'ai toujours pas saisi la logique du vba ... Dès que je colle, ça colle à l'infini à partir de LignFeuille + 39 ...
Comment faire pour dire " Coller une seule fois " ?
Explique précisement ce que tu veux faire. Parce que je ne comprend pas tout.
J'essayerai de te filé le code après.
J'essayerai de te filé le code après.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'ai ma plage A1:A39 sur FeType qui est tjs la même et qu eje modifie a l'aide d'une autre macro, du coup j'aimerai coller cette plage sur FePalette, mais si j'ai déjà une plage coller sur cette FePalette, j'aimerai qu'il la colle juste en dessous .. :s
Du coup j'ai tenté en mettant LignFeuille, pour pouvoir ensuite mettre LignFeuille = LignFeuille + 39.
Voilà j'espère avoir été précise ..
Merci beaucoup !
Du coup j'ai tenté en mettant LignFeuille, pour pouvoir ensuite mettre LignFeuille = LignFeuille + 39.
Voilà j'espère avoir été précise ..
Merci beaucoup !
Worksheets("Fetype").Range("A1", "A39").Copy
Worksheets("Fepalette").Select
If Cells(39, 1).Value = "" Then
Range("A1").Select
ActiveSheet.Paste
Else
Range("A40").Select
ActiveSheet.Paste
End If
En faite j'étais partie sur un truc dans ce style là,
FeType.Range("A1:F39").Copy
FePalette.Select
LignFeuille = 1
If Cells(LignFeuille, 3).Value = "" Then
Range("A1").Select
ActiveSheet.Paste
LignFeuille = LignFeuille + 39
Else:
Range("A" & LignFeuille).Select
ActiveSheet.Paste
End If
Pour pouvoir coller autant de fois que je veux sans me soucier de la destination. Sauf qu'évidemment, mon code merdouille :p Et que je ne sais pas ce que je dois rajouter ^^'
FeType.Range("A1:F39").Copy
FePalette.Select
LignFeuille = 1
If Cells(LignFeuille, 3).Value = "" Then
Range("A1").Select
ActiveSheet.Paste
LignFeuille = LignFeuille + 39
Else:
Range("A" & LignFeuille).Select
ActiveSheet.Paste
End If
Pour pouvoir coller autant de fois que je veux sans me soucier de la destination. Sauf qu'évidemment, mon code merdouille :p Et que je ne sais pas ce que je dois rajouter ^^'
voila avec cette maccro tu peux copier autant de fois que tu veux, cela se met a la suite avec un espace entre chaque.
Worksheets("Fetype").Range("A1", "A39").Copy
Worksheets("Fepalette").Select
If Cells(39, 1).Value = "" Then
Range("A1").Select
ActiveSheet.Paste
Else
For i = 40 To 65500 Step 40
If Cells(i, 1).Value = "" Then
Range("A" & i).Select
ActiveSheet.Paste
Exit Sub
End If
Next i