Bonjour à vous,
Je bloque depuis un petit moment sur une macro que j'aimerai faire.
Sauf erreur de ma part, aucune formule Excel ne me permet de le faire.
C'est un peu l'équivalent d'un recherche V sauf que j'ai plusieurs lignes différentes à reporter sur une autre feuille.
Pour faire simple, voici les étapes en français :
Rechercher la valeur d'une cellule de la feuille 2 dans la colonne A de la feuille 1
Si la valeur est présente, alors recopier seulement les données des lignes de la colonne D, G, H, I, K.
Dans les colonnes C, D, E, F, G à partir de la cellule C86
La Macro ci-après fonctionne bien. Mais me recopie les valeurs à partir de C2. Or j'en ai besoin à partir de C86.
Merci pour votre aide
Je bloque depuis un petit moment sur une macro que j'aimerai faire.
Sauf erreur de ma part, aucune formule Excel ne me permet de le faire.
C'est un peu l'équivalent d'un recherche V sauf que j'ai plusieurs lignes différentes à reporter sur une autre feuille.
Pour faire simple, voici les étapes en français :
Rechercher la valeur d'une cellule de la feuille 2 dans la colonne A de la feuille 1
Si la valeur est présente, alors recopier seulement les données des lignes de la colonne D, G, H, I, K.
Dans les colonnes C, D, E, F, G à partir de la cellule C86
La Macro ci-après fonctionne bien. Mais me recopie les valeurs à partir de C2. Or j'en ai besoin à partir de C86.
Merci pour votre aide
VB:
Option Explicit
Sub test()
Dim x As Long
Dim y As Long
Dim c As Range
Dim rdata As Range
' Déterminer la dernière ligne de la Feuille 1
x = Sheets("Actions - Risques").Range("A65536").End(xlUp).Row
' Déterminer la dernière ligne de la Feuille 2 + 1
y = Sheets("feuil5").Range("C65536").End(xlUp).Row + 1
' Déterminer la Plage de référence dans la Feuille 1
' dans la Colonne B ... à partir de la ligne 2 jusqu'à x
Set rdata = Sheets("Actions - Risques").Range("A2:A" & x)
' Effacer les anciennes lignes des anciennes demandes
If y >= 2 Then Sheets("feuil5").Range("A2:G" & y).ClearContents
' Boucle dans la plage de référence
For Each c In rdata
' Si la valeur de la cellule est égale à la
' valeur choisie en F2 de la Feuille 2
If c.Value = Sheets("feuil5").Range("I13").Value Then
' dans ce cas, copier depuis la Feuille 1, la plage A:D
' vers la Feuille 2 dans la Colonne A à la premiére ligne libre
Sheets("Actions - Risques").Range("D" & c.Row).Copy Destination:=Sheets("feuil5").Range("C" & y)
Sheets("Actions - Risques").Range("G" & c.Row).Copy Destination:=Sheets("feuil5").Range("D" & y)
Sheets("Actions - Risques").Range("H" & c.Row).Copy Destination:=Sheets("feuil5").Range("E" & y)
Sheets("Actions - Risques").Range("I" & c.Row).Copy Destination:=Sheets("feuil5").Range("F" & y)
Sheets("Actions - Risques").Range("K" & c.Row).Copy Destination:=Sheets("feuil5").Range("G" & y)
End If
' Recalculer la première ligne libre de la Feuille 2
y = Sheets("feuil5").Range("c65536").End(xlUp).Row + 1
' Retour de la boucle pour passer à la cellule suivante
Next c
End Sub