Bonsoir à tous,
Je suis un vrai novice sur VBA. J'utilise généralement l'enregistreur de macro, mais la j'y arrive pas.
Donc j'ai un fichier avec une colonne G par exemple qui regroupe les données d'un matricule
dans G1 , G2 ... etc mais dans la plage A1:F1 figurent les données d'identification du matricule sauf que les données d'identification ne figurent que dans la première plage A1:F1 puis la plage suivante donc A2:F2 est vide jusqu'aux prochaines données d'identification d'un matricule différent. Ce que je voudrais faire c'est copier coller la plage A1:F1 sur toutes les plages vides qui concerne le 1er matricules puis enchaîner avec la suite. J'ai essayé ce code mais c'est juste pour une cellule et ça ne semble pas bien fonctionner:
Sub Traitement()
Do Until ActiveCell = Range("A10004")
If ActiveCell.Value = "" Then
ActiveCell.Offset(-1, 0).Select
Selection.Copy
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
Range("B10").Select
Do Until ActiveCell = Range("B10004")
If ActiveCell.Value = "" Then
ActiveCell.Offset(-1, 0).Select
Selection.Copy
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
Range("C10").Select
Do Until ActiveCell = Range("C10004")
If ActiveCell.Value = "" Then
ActiveCell.Offset(-1, 0).Select
Selection.Copy
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
Range("D10").Select
Do Until ActiveCell = Range("D10004")
If ActiveCell.Value = "" Then
ActiveCell.Offset(-1, 0).Select
Selection.Copy
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
Range("E10").Select
Do Until ActiveCell = Range("E10004")
If ActiveCell.Value = "" Then
ActiveCell.Offset(-1, 0).Select
Selection.Copy
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
Range("F10").Select
Do Until ActiveCell = Range("F10004")
If ActiveCell.Value = "" Then
ActiveCell.Offset(-1, 0).Select
Selection.Copy
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
End Sub
Je joins un exemple de fichier excel pour être plus explicite. Voila, je vous remercie d'avance pour vos réponses et j'espère pouvoir m'améliorer en VBA afin de vous aider en retour =).
Je suis un vrai novice sur VBA. J'utilise généralement l'enregistreur de macro, mais la j'y arrive pas.
Donc j'ai un fichier avec une colonne G par exemple qui regroupe les données d'un matricule
dans G1 , G2 ... etc mais dans la plage A1:F1 figurent les données d'identification du matricule sauf que les données d'identification ne figurent que dans la première plage A1:F1 puis la plage suivante donc A2:F2 est vide jusqu'aux prochaines données d'identification d'un matricule différent. Ce que je voudrais faire c'est copier coller la plage A1:F1 sur toutes les plages vides qui concerne le 1er matricules puis enchaîner avec la suite. J'ai essayé ce code mais c'est juste pour une cellule et ça ne semble pas bien fonctionner:
Sub Traitement()
Do Until ActiveCell = Range("A10004")
If ActiveCell.Value = "" Then
ActiveCell.Offset(-1, 0).Select
Selection.Copy
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
Range("B10").Select
Do Until ActiveCell = Range("B10004")
If ActiveCell.Value = "" Then
ActiveCell.Offset(-1, 0).Select
Selection.Copy
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
Range("C10").Select
Do Until ActiveCell = Range("C10004")
If ActiveCell.Value = "" Then
ActiveCell.Offset(-1, 0).Select
Selection.Copy
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
Range("D10").Select
Do Until ActiveCell = Range("D10004")
If ActiveCell.Value = "" Then
ActiveCell.Offset(-1, 0).Select
Selection.Copy
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
Range("E10").Select
Do Until ActiveCell = Range("E10004")
If ActiveCell.Value = "" Then
ActiveCell.Offset(-1, 0).Select
Selection.Copy
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
Range("F10").Select
Do Until ActiveCell = Range("F10004")
If ActiveCell.Value = "" Then
ActiveCell.Offset(-1, 0).Select
Selection.Copy
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
End Sub
Je joins un exemple de fichier excel pour être plus explicite. Voila, je vous remercie d'avance pour vos réponses et j'espère pouvoir m'améliorer en VBA afin de vous aider en retour =).