Bonjour Forum,
J'aurais besoin de vos lumières sur un sujet.
J'ai plusieurs macros qui sont chacune affectée à un bouton. Je souhaiterais pouvoir lancer toutes ces macros (il y a en 52 correspondant au nombre de semaines d'une année) avec un seul bouton.
Pour exemple, je copie 2 d'entre elles.
Merci d'avance pour votre précieuse aide.
Sub IM_S2() 'semaine 2
Dim cel As Range 'déclare la variable cel (CELlule)
Dim pl As Range 'déclare la variable pl (PLage)
Dim dest As Range 'décalre la variable dest (DESTination)
Dim x As Byte 'déclare la variable x
'définit la variable pl
With Sheets("1S09") 'prend en compte l'onglet "1S09"
Set pl = .Range("A2:A" & .Range("A65536").End(xlUp).Row) 'définit la plage pl
End With 'fin de la prise en compte de l'onglet "Feuil1"
For Each cel In pl 'boucle sur toutes les cellules éditées cel de la plage pl
For x = 14 To 18 'boucle sur semaine 2
If Cells(cel.Row, x) = "I" Then GoTo copie 'condition : si la cellule contient "I" va à la balise "copie"
Next x 'prochaine colonne de la semaine 2
GoTo suite 'va à la balise "suite" (sans copier le nom)
copie: 'balise
With Sheets("Synthèse IM") 'prend en compte l'onglet "Synthèse IM"
If .Range("A2").Value = "" Then 'condition : si A2 est vide
Set dest = .Range("A2") 'définit la variable dest (A2)
Else 'sinon
Set dest = .Range("A65536").End(xlUp).Offset(1, 0) 'définit la variable A2 (la première ligne vide rencontrée)
End If 'fin de la condition
End With 'fin de la prise en compte de l'onglet "Synthèse IM"
cel.Copy Destination:=dest 'copie le nom et le colle
suite: 'balise
Next cel 'prochaine cellule cel de la plage pl
End Sub
Sub IM_S3() 'semaine 3
Dim cel As Range
Dim pl As Range
Dim dest As Range
Dim x As Byte
With Sheets("1S09")
Set pl = .Range("A2:A" & .Range("A65536").End(xlUp).Row)
End With
For Each cel In pl
For x = 19 To 23
If Cells(cel.Row, x) = "I" Then GoTo copie
Next x
GoTo suite
copie:
With Sheets("Synthèse IM")
If .Range("C2").Value = "" Then
Set dest = .Range("C2")
Else
Set dest = .Range("C65536").End(xlUp).Offset(1, 0)
End If
End With
cel.Copy Destination:=dest
suite:
Next cel
End Sub
J'aurais besoin de vos lumières sur un sujet.
J'ai plusieurs macros qui sont chacune affectée à un bouton. Je souhaiterais pouvoir lancer toutes ces macros (il y a en 52 correspondant au nombre de semaines d'une année) avec un seul bouton.
Pour exemple, je copie 2 d'entre elles.
Merci d'avance pour votre précieuse aide.
Sub IM_S2() 'semaine 2
Dim cel As Range 'déclare la variable cel (CELlule)
Dim pl As Range 'déclare la variable pl (PLage)
Dim dest As Range 'décalre la variable dest (DESTination)
Dim x As Byte 'déclare la variable x
'définit la variable pl
With Sheets("1S09") 'prend en compte l'onglet "1S09"
Set pl = .Range("A2:A" & .Range("A65536").End(xlUp).Row) 'définit la plage pl
End With 'fin de la prise en compte de l'onglet "Feuil1"
For Each cel In pl 'boucle sur toutes les cellules éditées cel de la plage pl
For x = 14 To 18 'boucle sur semaine 2
If Cells(cel.Row, x) = "I" Then GoTo copie 'condition : si la cellule contient "I" va à la balise "copie"
Next x 'prochaine colonne de la semaine 2
GoTo suite 'va à la balise "suite" (sans copier le nom)
copie: 'balise
With Sheets("Synthèse IM") 'prend en compte l'onglet "Synthèse IM"
If .Range("A2").Value = "" Then 'condition : si A2 est vide
Set dest = .Range("A2") 'définit la variable dest (A2)
Else 'sinon
Set dest = .Range("A65536").End(xlUp).Offset(1, 0) 'définit la variable A2 (la première ligne vide rencontrée)
End If 'fin de la condition
End With 'fin de la prise en compte de l'onglet "Synthèse IM"
cel.Copy Destination:=dest 'copie le nom et le colle
suite: 'balise
Next cel 'prochaine cellule cel de la plage pl
End Sub
Sub IM_S3() 'semaine 3
Dim cel As Range
Dim pl As Range
Dim dest As Range
Dim x As Byte
With Sheets("1S09")
Set pl = .Range("A2:A" & .Range("A65536").End(xlUp).Row)
End With
For Each cel In pl
For x = 19 To 23
If Cells(cel.Row, x) = "I" Then GoTo copie
Next x
GoTo suite
copie:
With Sheets("Synthèse IM")
If .Range("C2").Value = "" Then
Set dest = .Range("C2")
Else
Set dest = .Range("C65536").End(xlUp).Offset(1, 0)
End If
End With
cel.Copy Destination:=dest
suite:
Next cel
End Sub