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