1 pièce(s) jointe(s)
Macro VBA pour copier des données
Bonjour à tous,
Je me permets de solliciter votre aide car je n’arrive pas à réaliser une macro permettant de répondre à mon besoin.
Je vous joins un classeur exemple.
Concrètement, chaque personne dispose de fonctions dont le nombre peut varier (dans l’exemple, 3 fonctions actuelles).
Sous chaque fonction est indiqué le nom (en colonne A), en colonne E est indiqué l’identifiant et en colonne H, la date d’effet.
Ce que je souhaiterai est crééer une macro qui arrangerait le fichier pour avoir, sur la même ligne :
- La fonction
- Le nom
- L’identifiant correspondant
- La date d’effet
Je ne sais pas comment m’y prendre sachant que ces informations ne sont pas sur le même ligne à l’origine, que le nombre de fonction peut varier et que ces informations ne sont pas toujours placées sur une ligne en particulier (dans mon exemple par exemple, la fonction 1 se retrouve en ligne 23, mais dans un autre exemple, elle peut se retrouver en ligne 25).
Pourriez-vous m’aider s’il vous plait ?
Merci par avance.
Macro VBA pour copier des données
Voila la version simplifiée, le "With plage" est inutile ici, à la différence du premier script avec Fonction1, Fonction2 et Fonction 3 :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
Sub test4()
Dim plage As Range
Dim occur As Range
Dim mot As String
Dim premier_match As String
Dim i As Integer
mot = "Fonction *"
Set plage = Worksheets(1).Range("A1:H50")
Set occur = plage.Find(What:=mot)
If Not occur Is Nothing Then
premier_match = occur.Address
Do
i = i + 1
Cells(i + 22, 15) = occur.Value 'fonction
Cells(i + 22, 16) = occur.Offset(rowOffset:=1) 'nom
Cells(i + 22, 17) = occur.Offset(rowOffset:=2, columnOffset:=4) 'identifiant
Cells(i + 22, 18) = occur.Offset(rowOffset:=2, columnOffset:=6) 'référence
Cells(i + 22, 19) = occur.Offset(columnOffset:=7) 'date
Set occur = plage.FindNext(occur)
Loop While Not occur Is Nothing And occur.Address <> premier_match
End If
End Sub |