Reproduire une macro sur plusieurs ligne

Résolu/Fermé
Kev - 17 sept. 2018 à 12:25
 Kev - 17 sept. 2018 à 14:32
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



A voir également:

3 réponses

titeufdu89 Messages postés 375 Date d'inscription samedi 28 juillet 2012 Statut Membre Dernière intervention 1 avril 2023 38
17 sept. 2018 à 13:36
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
0
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 !
0
titeufdu89 Messages postés 375 Date d'inscription samedi 28 juillet 2012 Statut Membre Dernière intervention 1 avril 2023 38
Modifié le 17 sept. 2018 à 13:58
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
0
Un message d'erreur à la ligne
Sheets("Février").Range("C" & i & ":F" & i) = Sheets("Accueil").Range("S17:V17").Select
0
titeufdu89 Messages postés 375 Date d'inscription samedi 28 juillet 2012 Statut Membre Dernière intervention 1 avril 2023 38
17 sept. 2018 à 14:05
Oui j'ai modifié le code mais pas assez rapidement, tu l'avais déjà utilisé... désolé je l'ai posté avant de l'avoir testé... tu peux réessayer si tu veux
0
Ca fonctionne parfaitement! Un grand merci!!!!!!!!!!!!!
0
titeufdu89 Messages postés 375 Date d'inscription samedi 28 juillet 2012 Statut Membre Dernière intervention 1 avril 2023 38
17 sept. 2018 à 14:16
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
0
Encore mille merci!!!!
0