Reproduire une macro sur plusieurs ligne
Résolu
Kev
-
Kev -
Kev -
Bonjour,
Débutant en macro j'arrive face à un problème. J'ai réussi a obtenir ce que je veux sur 1 ligne, mais je ne sais pas comment le reproduire sur X lignes.
Je m'explique, sur la feuille "Accueil" j'ai 7 lignes (des horaires). Sur ma feuille "février" j'essaye de copier ses horaires par rapport à l'information sur ma cellule A9. J'ai "nommé" ses horaires de 1 à 7. En gros, je demande à la macro: Si A9 = 1 Alors copie sur la feuille "Accueil" S18:V18 et colle le sur la feuille "février" en C9:F9. Et la macro fait la recherche pour les 7 horaires.
Le soucis est que j'ai réussi à l'applique pour la première ligne.. la ligne 9, mais j'aimerais que ça s'applique sur plusieurs ligne! Chaque ligne correspondant à un jour du mois.
En espérant avoir été assez précis pour que vous puissiez m'aider. Le bout de macro que j'ai déjà ci-dessous
Un grand merci d'avance pour votre aide!!!
Sub CopierColler_Février_HoraireType()
' CopierColler Macro
If Range("A9") = 7 Then
Sheets("Accueil").Select
Range("S17:V17").Select
Selection.Copy
Sheets("Février").Select
Range("C9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
If Range("A9") = 1 Then
Sheets("Accueil").Select
Range("S18:V18").Select
Selection.Copy
Sheets("Février").Select
Range("C9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
If Range("A9") = 2 Then
Sheets("Accueil").Select
Range("S12:V12").Select
Selection.Copy
Sheets("Février").Select
Range("C9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
If Range("A9") = 3 Then
Sheets("Accueil").Select
Range("S13:V13").Select
Selection.Copy
Sheets("Février").Select
Range("C9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
If Range("A9") = 4 Then
Sheets("Accueil").Select
Range("S14:V14").Select
Selection.Copy
Sheets("Février").Select
Range("C9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
If Range("A9") = 5 Then
Sheets("Accueil").Select
Range("S15:V15").Select
Selection.Copy
Sheets("Février").Select
Range("C9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
If Range("A9") = 6 Then
Sheets("Accueil").Select
Range("S16:V16").Select
Selection.Copy
Sheets("Février").Select
Range("C9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
Application.CutCopyMode = False
End Sub
Débutant en macro j'arrive face à un problème. J'ai réussi a obtenir ce que je veux sur 1 ligne, mais je ne sais pas comment le reproduire sur X lignes.
Je m'explique, sur la feuille "Accueil" j'ai 7 lignes (des horaires). Sur ma feuille "février" j'essaye de copier ses horaires par rapport à l'information sur ma cellule A9. J'ai "nommé" ses horaires de 1 à 7. En gros, je demande à la macro: Si A9 = 1 Alors copie sur la feuille "Accueil" S18:V18 et colle le sur la feuille "février" en C9:F9. Et la macro fait la recherche pour les 7 horaires.
Le soucis est que j'ai réussi à l'applique pour la première ligne.. la ligne 9, mais j'aimerais que ça s'applique sur plusieurs ligne! Chaque ligne correspondant à un jour du mois.
En espérant avoir été assez précis pour que vous puissiez m'aider. Le bout de macro que j'ai déjà ci-dessous
Un grand merci d'avance pour votre aide!!!
Sub CopierColler_Février_HoraireType()
' CopierColler Macro
If Range("A9") = 7 Then
Sheets("Accueil").Select
Range("S17:V17").Select
Selection.Copy
Sheets("Février").Select
Range("C9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
If Range("A9") = 1 Then
Sheets("Accueil").Select
Range("S18:V18").Select
Selection.Copy
Sheets("Février").Select
Range("C9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
If Range("A9") = 2 Then
Sheets("Accueil").Select
Range("S12:V12").Select
Selection.Copy
Sheets("Février").Select
Range("C9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
If Range("A9") = 3 Then
Sheets("Accueil").Select
Range("S13:V13").Select
Selection.Copy
Sheets("Février").Select
Range("C9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
If Range("A9") = 4 Then
Sheets("Accueil").Select
Range("S14:V14").Select
Selection.Copy
Sheets("Février").Select
Range("C9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
If Range("A9") = 5 Then
Sheets("Accueil").Select
Range("S15:V15").Select
Selection.Copy
Sheets("Février").Select
Range("C9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
If Range("A9") = 6 Then
Sheets("Accueil").Select
Range("S16:V16").Select
Selection.Copy
Sheets("Février").Select
Range("C9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
Application.CutCopyMode = False
End Sub
3 réponses
-
Bonjour,
Je pense qu'une boucle du type "for" avec un "select case" serait plus approprié mais sans voir la structure de ton document c'est un peu abstrait pour créer un code... Te serait-il possible de poster un exemple de ton fichier afin que l'on puisse t'aider davantage, tu peux utiliser le site gratuit : https://www.cjoint.com/
A bientôt
Jc-
Bonjour JC,
Tout d'abord merci de t'intéresser à mon problème.
Un exemple de mon fichier avec les Cellules au même endroit que sur mon fichier.
https://www.cjoint.com/c/HIrl07jxpGd
Je souhaite que lorsque j'exécute la macro, surement par bouton l'horaire type se copier sur le mois de février.
(j'utilise les numéro 1 à 7 pour les jours de la semaine parce 'que je souhaite que le fichier fonctionne pour plusieurs années)
Merci encore !
-
-
Tu peux essayer ce code, a copier dans un module
Sub CopierColler_Février_HoraireType() Dim i As Long For i = 9 To 15 '<< remplacer 15 par le numéro de la dernière ligne à traiter Select Case Sheets("Février").Range("A" & i).Value Case 7 Sheets("Février").Range("C" & i & ":F" & i) = Sheets("Accueil").Range("S17:V17").Value Case 1 Sheets("Février").Range("C" & i & ":F" & i) = Sheets("Accueil").Range("S18:V18").Value Case 2 Sheets("Février").Range("C" & i & ":F" & i) = Sheets("Accueil").Range("S12:V12").Value Case 3 Sheets("Février").Range("C" & i & ":F" & i) = Sheets("Accueil").Range("S13:V13").Value Case 4 Sheets("Février").Range("C" & i & ":F" & i) = Sheets("Accueil").Range("S14:V14").Value Case 5 Sheets("Février").Range("C" & i & ":F" & i) = Sheets("Accueil").Range("S15:V15").Value Case 6 Sheets("Février").Range("C" & i & ":F" & i) = Sheets("Accueil").Range("S16:V16").Value End Select Next i End Sub
Jc -
Ci-joint ton fichier
https://www.cjoint.com/c/HIrmmURPp5o
La macro détecte la dernière cellule de la colonne A non vide et lance la macro jusqu'à cette cellule ci.
Si tu crée d'autres feuilles pour d'autre mois, tu peux appeler la même macro car elle s'adapte en fonction de la feuille active.
Bonne journée
Jc