Bonjour à tous,
Voici le contexte de mon problème :
Je travaille sur l'automatisation d'un fiché excel à l'aide d'une macro qui permettrait de copier une plage de cellule ("K4:Q4") de la feuille "Plan de prévention BIS" en fonction du lieu en I4 et du nombre de la semaine en J. Pour ensuite coller la plage de cellule d'en une autre feuille qui correspond à une semaine.
Je voudrais répéter cette opération pour toutes les lignes de la feuille "Plan de prévention BIS" en activant la macro par un bouton.
Jusqu'ici pas de problème sur ma macro, mais les choses se complique lorsque je veux modifier cette macro. Je voudrais que si la macro détecte que la plage de cellule initialement prévu n'est pas vide, qu'elle passe automatiquement à la plage de dessous.
Voici ma macro à cette heure ci :
Sub test2()
Dim feuille2 As Worksheet
Set feuille2 = ThisWorkbook.Sheets("Liste plan de prévention BIS")
Dim Lieu As String
Dim Semaine As Integer
Dim Plage As Range
Lieu = feuille2.Range("I4").Value
Semaine = feuille2.Range("J4").Value
Dim feuille As Worksheet
Set feuille = ThisWorkbook.Sheets("SEMAINE (" & Semaine & ")")
Select Case Lieu
Case "Compo"
Set Plage = feuille.Range("F11:L11")
Do While Not IsEmpty(Plage.Offset(1, 0))
If IsEmpty(Plage.Value) Then
Exit Do
End If
Set Plage = Plage.Offset(1, 0)
Loop
feuille2.Range("K4:Q4").Copy Plage
Case "Fusion"
Set Plage = feuille.Range("F19:L19")
Do While Not IsEmpty(Plage.Offset(1, 0))
If IsEmpty(Plage.Value) Then
Exit Do
End If
Set Plage = Plage.Offset(1, 0)
Loop
feuille2.Range("K4:Q4").Copy Plage
Case "Feeder-scoop"
Set Plage = feuille.Range("F28:L28")
Do While Not IsEmpty(Plage.Offset(1, 0))
If IsEmpty(Plage.Value) Then
Exit Do
End If
Set Plage = Plage.Offset(1, 0)
Loop
feuille2.Range("K4:Q4").Copy Plage
Case "Chaud"
Set Plage = feuille.Range("F42:L42")
Do While Not IsEmpty(Plage.Offset(1, 0))
If IsEmpty(Plage.Value) Then
Exit Do
End If
Set Plage = Plage.Offset(1, 0)
Loop
feuille2.Range("K4:Q4").Copy Plage
Case "Froid"
Set Plage = feuille.Range("F53:L53")
Do While Not IsEmpty(Plage.Offset(1, 0))
If IsEmpty(Plage.Value) Then
Exit Do
End If
Set Plage = Plage.Offset(1, 0)
Loop
feuille2.Range("K4:Q4").Copy Plage
Case "Sous-sols caves"
Set Plage = feuille.Range("F64:L64")
Do While Not IsEmpty(Plage.Offset(1, 0))
If IsEmpty(Plage.Value) Then
Exit Do
End If
Set Plage = Plage.Offset(1, 0)
Loop
feuille2.Range("K4:Q4").Copy Plage
Case "Sous-sols techniques"
Set Plage = feuille.Range("F75:L75")
Do While Not IsEmpty(Plage.Offset(1, 0))
If IsEmpty(Plage.Value) Then
Exit Do
End If
Set Plage = Plage.Offset(1, 0)
Loop
feuille2.Range("K4:Q4").Copy Plage
Case "Logistique"
Set Plage = feuille.Range("F92:L92")
Do While Not IsEmpty(Plage.Offset(1, 0))
If IsEmpty(Plage.Value) Then
Exit Do
End If
Set Plage = Plage.Offset(1, 0)
Loop
feuille2.Range("K4:Q4").Copy Plage
Case "Atelier ADF"
Set Plage = feuille.Range("F97:L97")
Do While Not IsEmpty(Plage.Offset(1, 0))
If IsEmpty(Plage.Value) Then
Exit Do
End If
Set Plage = Plage.Offset(1, 0)
Loop
feuille2.Range("K4:Q4").Copy Plage
Case "Atelier M2S"
Set Plage = feuille.Range("F108:K108")
Do While Not IsEmpty(Plage.Offset(1, 0))
If IsEmpty(Plage.Value) Then
Exit Do
End If
Set Plage = Plage.Offset(1, 0)
Loop
feuille2.Range("K4:Q4").Copy Plage
Case "Autre"
Set Plage = feuille.Range("F118:K118")
Do While Not IsEmpty(Plage.Offset(1, 0))
If IsEmpty(Plage.Value) Then
Exit Do
End If
Set Plage = Plage.Offset(1, 0)
Loop
feuille2.Range("K4:Q4").Copy Plage
End Select
End Sub
Je rencontre donc l'erreur d’exécution '1004' avec : Do While Not IsEmpty(Plage.Offset(1, 0)). Je n'arrive à me débloquer...
Je fais donc appel à votre aide.
Merci d'avance
Partager