Recherche un mot et copie des valeurs 2nd colonne, méthode find
Résolu
jpub
Messages postés
53
Statut
Membre
-
jpub Messages postés 53 Statut Membre -
jpub Messages postés 53 Statut Membre -
Bonjour,
Je suis en train de faire de tableau de consolidation des plusieurs onglets.
Dans ce cadre j'arrive sans problème à récupérer les infos sur les pages et à les reporter sauf pour une valeur qui n'est pas placé au même endroit dans chaque onglet.
Pour cela j'essaye la formule suivant mais ça ne marche pas je ne comprend pas pourquoi, pouvez vous m'aider ?
Range("R" & LastR).Value = Sheets(i).Range("D5:D100").Find(MEP, , xlValues, xlWhole, xlByColumns + 2 ).Value
le tableau est fait de la façon suivante
|.|A..... |B..........|C..........|D|
|1|NOM|DATE 1...|DATE 2..|D|
|2|MEP.|15/12/15|22/12/15|D|
je recherche donc la valeur MPE, qui ne peut être compris qu'entre les ligne D5 D100, une fois trouvé je récupère ses coorodonnée et je copie donc la valeur en colonne C ( xlByColumns + 2 ) et bien sur ça ne marche pas.
L'un de vous a-t-il une solution pour m'aider ?
ci-dessous le code en entier avec mon erreur ligne 28
en vous remerciant par avance
Je suis en train de faire de tableau de consolidation des plusieurs onglets.
Dans ce cadre j'arrive sans problème à récupérer les infos sur les pages et à les reporter sauf pour une valeur qui n'est pas placé au même endroit dans chaque onglet.
Pour cela j'essaye la formule suivant mais ça ne marche pas je ne comprend pas pourquoi, pouvez vous m'aider ?
Range("R" & LastR).Value = Sheets(i).Range("D5:D100").Find(MEP, , xlValues, xlWhole, xlByColumns + 2 ).Value
le tableau est fait de la façon suivante
|.|A..... |B..........|C..........|D|
|1|NOM|DATE 1...|DATE 2..|D|
|2|MEP.|15/12/15|22/12/15|D|
je recherche donc la valeur MPE, qui ne peut être compris qu'entre les ligne D5 D100, une fois trouvé je récupère ses coorodonnée et je copie donc la valeur en colonne C ( xlByColumns + 2 ) et bien sur ça ne marche pas.
L'un de vous a-t-il une solution pour m'aider ?
ci-dessous le code en entier avec mon erreur ligne 28
en vous remerciant par avance
Sub ListePage()
Application.ScreenUpdating = False
With Sheets("HOME").ListObjects("DeOnT") 'je vide le tableau DeOnT
If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete
End With
Sheets("HOME").Select 'je selectionne la feuille dashboard
Dim LastR As Long
Dim subAss As String
Dim valCell As String
Dim CyViA As String
Dim Trouve As Range
For i = 4 To Sheets.Count 'je commence à prendre en compte les feuilles à partir de la 4ème
subAdd = Sheets(i).Name & "!k2" 'permet de renommer l'onglet avec le nom en K2 de la feuille
valCell = Sheets(i).Range("k2").Value
LastR = Derniere_Ligne(ActiveSheet) + 1
ActiveSheet.Hyperlinks.Add Anchor:=Range("C" & LastR), Address:="", SubAddress:=subAdd, TextToDisplay:=valCell 'nom de page + lien dans la tableau en HOME
Range("C" & LastR).Value = Sheets(i).Range("K2").Value 'numéro
Range("D" & LastR).Value = Sheets(i).Range("C2").Value 'titre
Range("F" & LastR).Value = Sheets(i).Range("E1").Value 'pourcentage
Range("G" & LastR).Value = Sheets(i).Range("M6").Value 'type
Range("R" & LastR).Value = Sheets(i).RangeD5:D100").Find(MEP, , xlValues, xlWhole, xlByColumns + 2 ).Value
Next 'Feuille Suivante
Application.ScreenUpdating = True
End Sub
Function Derniere_Ligne(Sh As Worksheet) As Long
Derniere_Ligne = Sh.Cells.Find("*", Range("A1"), , , xlByRows, xlPrevious).Row
End Function
A voir également:
- Recherche un mot et copie des valeurs 2nd colonne, méthode find
- Déplacer colonne excel - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Trier colonne excel - Guide
- Copie cachée - Guide
- Trousseau mot de passe iphone - Guide
4 réponses
Bonjour,
Pour la syntaxe de la méthode find, voir ICI.
Sinon, utilisez Offset comme ceci :
Pour la syntaxe de la méthode find, voir ICI.
Sinon, utilisez Offset comme ceci :
Range("R" & LastR).Value = Sheets(i).Range("D5:D100").Find(MEP, , xlValues, xlWhole, xlByColumns).Offset(0, 2).Value
bonjour
xlbycolumns est l'ordre de recherche (colonne par colonne ) et ne sert à rien dans une recherche sur 1 colonne
mais il y a d'autre choses bizarres dans cette ligne
faute de syntaxe
Range("R" & LastR).Value = Sheets(i).Range("D5:D100").Find("MEP",range("D4") , xlValues, xlWhole).address
address car tu as marqué :"je récupère ses coorodonnée "
actuellement la valeur dans la cellule R est si on trouve MEP en ligne 32 par exemple, la valeur inscrite en R32 est : $D$32
mais tu dis vouloir donner la valeur en colonne C
Michel
xlbycolumns est l'ordre de recherche (colonne par colonne ) et ne sert à rien dans une recherche sur 1 colonne
mais il y a d'autre choses bizarres dans cette ligne
faute de syntaxe
Range("R" & LastR).Value = Sheets(i).Range("D5:D100").Find("MEP",range("D4") , xlValues, xlWhole).address
address car tu as marqué :"je récupère ses coorodonnée "
actuellement la valeur dans la cellule R est si on trouve MEP en ligne 32 par exemple, la valeur inscrite en R32 est : $D$32
mais tu dis vouloir donner la valeur en colonne C
Michel
Bonjour,
Merci de votre aide, je n'aurais pas accès à mon fichier avant Mercredi , je reviens donc vers vous à cette date.
Encore Merci
Jonathan
Merci de votre aide, je n'aurais pas accès à mon fichier avant Mercredi , je reviens donc vers vous à cette date.
Encore Merci
Jonathan
Bonjour,
Encore merci pour votre aide, j'ai pu m'en sortir en modifiant sans vraiment comprendre pourquoi ça marche le code que vous m'avez donné (ligne 29 et 31).
Cela donne
encore merci à vous
Jonathan
Encore merci pour votre aide, j'ai pu m'en sortir en modifiant sans vraiment comprendre pourquoi ça marche le code que vous m'avez donné (ligne 29 et 31).
Cela donne
Sub ListePage()
Application.ScreenUpdating = False
With Sheets("HOME").ListObjects("Devoirs") 'je vide le tableau devoirs
If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete
End With
Sheets("HOME").Select 'je selectionne la feuille dashboard
Dim LastR As Long
Dim subAss As String
Dim valCell As String
Dim CyViA As String
Dim Trouve As Range
For I = 4 To Sheets.Count
subAdd = Sheets(I).Name & "!k2"
valCell = Sheets(I).Range("k2").Value
LastR = Derniere_Ligne(ActiveSheet) + 1
ActiveSheet.Hyperlinks.Add Anchor:=Range("C" & LastR), Address:="", SubAddress:=subAdd, TextToDisplay:=valCell 'nom de page + lien
Range("C" & LastR).Value = Sheets(I).Range("K2").Value 'numéro d opé
Range("D" & LastR).Value = Sheets(I).Range("C2").Value 'titre d opé
Range("F" & LastR).Value = Sheets(I).Range("E1").Value 'pourcentage
Range("G" & LastR).Value = Sheets(I).Range("M6").Value 'type d'opé
Range("H" & LastR).Value = Sheets(I).Range("M11").Value 'resp. commercial
Range("I" & LastR).Value = Sheets(I).Range("E5").Value 'Date de début
Range("P" & LastR).Value = Sheets(I).Range("D5:D100").Find(MEP, , xlValues, xlWhole).Offset(-2, 2).Value
Range("R" & LastR).Value = Sheets(I).Range("D5:D100").Find(MEL, , xlValues, xlWhole).Offset(-1, 2).Value
DLig = 1 + Application.WorksheetFunction.CountIf(Sheets(I).Range("G4:G100"), "x") 'cycle de vie
Range("J" & LastR).Value = Sheets(I).Cells(DLig + 4, 4).Value 'cycle de vie actuel nom
Range("K" & LastR).Value = Sheets(I).Cells(DLig + 4, 6).Value 'cycle de vie actuel date
Range("M" & LastR).Value = Sheets(I).Cells(DLig + 5, 4).Value 'prochain cycle de vie actuel nom
Range("N" & LastR).Value = Sheets(I).Cells(DLig + 5, 6).Value 'prochain cycle de vie actuel date
Next 'Feuille Suivante
Application.ScreenUpdating = True
End Sub
Function Derniere_Ligne(Sh As Worksheet) As Long
Derniere_Ligne = Sh.Cells.Find("*", Range("A1"), , , xlByRows, xlPrevious).Row
End Function
encore merci à vous
Jonathan