Reporter des données grâce à une macro
c
Bonjour,
Je me permets de vous solliciter aujourd'hui pour m'aider dans la construction d'une macro.
Je contextualise :
J'ai dans une feuille nommée "DATA" plein de données.
Dans une seconde feuille "N1 Macro" j'aimerais venir récupérer des données de la première feuille à l'aide d'une macro.
Je m'explique :
Si dans ma feuille "N1 Macro" j'ai le responsable "chloerbre" de sélectionné alors je veux qu'il aille me chercher toutes les personnes de ma feuille "DATA" qui ont chloerbre en tant que responsable et qu'il vienne me coller leur matricule dans "N1 Macro"
J'avais fait cette formule qui fonctionnait mais à chaque fois il me collait les matricules au même endroit ce qui écrasait ceux d'avant
Sub standard()
Range("AR1").Select
While ActiveCell <> ""
If ActiveCell.Value = Sheets("N1 Macro").Range("D2").Value Then
ActiveCell.Offset(0, -41).Copy
Worksheets("N1 Macro").Cells(9, 2).Value = ActiveCell.Offset(0, -41)
End If
ActiveCell.Offset(1, 0).Select
Wend
End Sub
Je n'arrive pas à lui dire "dans la feuille DATA répète l'opération tant que les cellules ne sont pas vide" et en même temps "viens coller les informations que tu récupères dans la feuille N1 Macro mais décale toi d'une colonne à chaque fois".
Je ne sais pas si j'ai été suffisamment claire
Merci d'avance pour votre aide :)
Bonne journée
Je me permets de vous solliciter aujourd'hui pour m'aider dans la construction d'une macro.
Je contextualise :
J'ai dans une feuille nommée "DATA" plein de données.
Dans une seconde feuille "N1 Macro" j'aimerais venir récupérer des données de la première feuille à l'aide d'une macro.
Je m'explique :
Si dans ma feuille "N1 Macro" j'ai le responsable "chloerbre" de sélectionné alors je veux qu'il aille me chercher toutes les personnes de ma feuille "DATA" qui ont chloerbre en tant que responsable et qu'il vienne me coller leur matricule dans "N1 Macro"
J'avais fait cette formule qui fonctionnait mais à chaque fois il me collait les matricules au même endroit ce qui écrasait ceux d'avant
Sub standard()
Range("AR1").Select
While ActiveCell <> ""
If ActiveCell.Value = Sheets("N1 Macro").Range("D2").Value Then
ActiveCell.Offset(0, -41).Copy
Worksheets("N1 Macro").Cells(9, 2).Value = ActiveCell.Offset(0, -41)
End If
ActiveCell.Offset(1, 0).Select
Wend
End Sub
Je n'arrive pas à lui dire "dans la feuille DATA répète l'opération tant que les cellules ne sont pas vide" et en même temps "viens coller les informations que tu récupères dans la feuille N1 Macro mais décale toi d'une colonne à chaque fois".
Je ne sais pas si j'ai été suffisamment claire
Merci d'avance pour votre aide :)
Bonne journée
21FormaticPassionné d'Excel
- Messages
- 3'678
- Excel
- 365, 2019
- Inscrit
- 11/04/2020
- Emploi
- Formateur bureautique, dvpt de fichiers
Bonjour,
SI j'ai bien compris, j'imagine que quelque chose comme ceci pourrait faire l'affaire. On pourrait compliquer (ou simplifier, c'est selon le degré de maîtrise) avec un tableau en mémoire, mais je n'en vois pas trop l'intérêt ici pour le moment :
Sub standard()
Dim cel As Range
i = 2 'on créé une variable, à laquelle on donne la valeur 2 de base
For Each cel In Range("AR1:AR" & Range("AR1").End(xlDown).Row)
If cel.Value = Sheets("N1 Macro").Range("D2").Value Then
Worksheets("N1 Macro").Cells(9, i).Value = cell.Offset(0, -41) 'la variable i se retrouve ici pour indiquer le numéro de la colonne dans laquelle on va écrire le matricule
i = i + 1 'on ajoute 1 à notre variable, pour qu'il aille dans la colonne 3, et ainsi de suite
End If
Next
End SubTu évites ainsi en plus les .select qui font perdre énormément de temps d'exécution au programme.
Si je n'ai pas bien compris ce que tu souhaites faire, n'hésite pas à revenir ici.