VBA recherche les positions d'une même valeur/ 1 colonne

Bonjour,

Pas très expérimentée en VBA, je galère depuis plusieurs jours pour écrire une macro qui doit exécuter les instructions suivantes :

Recherche dans la colonne N à partir de N9 de la variable " n° de dossier"de la cellule N2 et relever les positions successives de cette variable afin de copier coller la plage de données en ligne "K2:AD2" sur chaque ligne trouvée de la base données, 3 colonnes avant (donc à partir de la colonne K)

Je joins un fichier Excel soft.

Merci d'avance pour votre aide.

Christine

Voici le code que j'ai commencé à écrire , mais je n'arrive pas à me positionner 3 colonnes avant par rapport à l'adresse de la variable récupérée :

Sub cherche_trouve_colle()

Dim DERLIGN As Long

Dim RECHERCHE As String

RECHERCHE = Range("N2").Value

Dim PremCellule As String

Dim Cellule As Range

Dim PremLigne As String

With Worksheets("DEMANDES").Activate

DERLIGN = Range("A" & Rows.Count).End(xlUp).Row

End With

With Worksheets("DEMANDES").Range("N8:N" & DERLIGN)

Set Cellule = .Find(RECHERCHE)

If Not Cellule Is Nothing Then

PremCellule = Cellule.Address

Do

MsgBox Cellule.Address

Set Cellule = .FindNext(Cellule)

Loop Until Cellule.Address = PremCellule

End If

End With

End Sub

Une autre petite question : Peut on utiliser dans une macro le nom qui a été donné sous excel à une cellule ou une plage de cellules ; pour permettre, si la structure du fichier a été modifiée par ajout de colonnes par exemple de ne pas modifier la syntaxe de la macro ?

Bonjour,

En cherchant mieux j'ai réussi à copier coller la plage sur chaque ligne avec le code suivant :

Option Explicit

Sub cherche_trouve_colle()

Dim DERLIGN As Long

Dim RECHERCHE As String

RECHERCHE = Range("N2").Value

Dim PremCellule As String

Dim Cellule As Range

Dim PremLigne As Long

With Worksheets("DEMANDES").Activate

DERLIGN = Range("A" & Rows.Count).End(xlUp).Row

End With

With Worksheets("DEMANDES").Range("N8:N" & DERLIGN)

Set Cellule = .Find(RECHERCHE)

If Not Cellule Is Nothing Then

PremCellule = Cellule.Address

PremLigne = Range(Cellule.Address).Row

Worksheets("DEMANDES").Range("K2:AD2").Copy

Worksheets("DEMANDES").Range("K" & PremLigne).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

Do

MsgBox Cellule.Address & PremLigne

Set Cellule = .FindNext(Cellule)

PremLigne = Range(Cellule.Address).Row

Worksheets("DEMANDES").Range("K2:AD2").Copy

Worksheets("DEMANDES").Range("K" & PremLigne).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

Loop Until Cellule.Address = PremCellule

End If

End With

End Sub

Ce que je ne comprends pas : pourquoi le processus revient sur la première ligne trouvée en boucle finale ?

Je voulais savoir si mon code était proprement écrit ?

Merci d'avance pour votre aide

Christine

Rechercher des sujets similaires à "vba recherche positions meme valeur colonne"