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
A voir également:
- Reproduire une macro sur plusieurs ligne
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Partager photos en ligne - Guide
- Mètre en ligne - Guide
- Aller à la ligne excel - Guide
- Apparaitre hors ligne instagram - Guide
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
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
Tu peux essayer ce code, a copier dans un module
Jc
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
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
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 !