Recherche de valeurs dans colonne et copier-coller

Vinvol

XLDnaute Junior
Bonjour,

Je reviens vers vous parce que j'essaye de bricoler un code qui me permette de rechercher, ligne après ligne, les valeurs d'une colonne (colonne A sheet1) dans une une autre colonne (colonne A sheet2) et que pour chaque valeur trouvée, il me copie le contenu de la cellule à droite de celle où la-dite valeur a été trouvée.

Jusqu'ici, c'est pas très clair et vous n'avez pas vraiment compris : c'est normal ! Un fichier joint devrait vous aider à mieux comprendre.

Bref, clairement, je n'ai pas encore le niveau pour ça. Jusqu'ici, j'arrive à rechercher mes valeurs, mais je ne suis capable de renvoyer qu'une valeur définie :

Code:
Sub Test()

With Sheets("Sheet2")
Set plage = .Range("A1:A" & .Range("A65000").End(xlUp).Row)
End With

With Sheets("Sheet1")

Dim i As Integer
    For i = 1 To .Range("A65000").End(xlUp).Row
       If Application.CountIf(plage, .Cells(i, 1)) > 0 Then .Range("B" & i).Value = "Truc"
    Next

End With

End Sub


Pourriez vous m'aider à modifier le [...]Then .Range("B" & i).Value = "Truc"[...] pour qu'à la place de "truc", il me retourne la valeur "B" & i de la sheet2 (i (qui doit peut-être devenir j) étant la ligne où la valeur recherchée à été trouvée) ?

Code:
Then [...?...].copy Destination .Range("B" & i)=
Un truc dans ce goût là j'imagine...

J'espère que c'est suffisamment clair (ou du moins pas trop confus) pour que vous puissiez m'aider.

Merci,
Vincent
 

Pièces jointes

  • Book1.xlsm
    24.8 KB · Affichages: 34
  • Book1.xlsm
    24.8 KB · Affichages: 47
  • Book1.xlsm
    24.8 KB · Affichages: 39

Vinvol

XLDnaute Junior
Re : Recherche de valeurs dans colonne et copier-coller

Ca y est, j'ai une autre raison de ne pas utiliser cette formule (qui pourtant marche... c'est dommage).

Les valeurs que je veux copier sont des liens hypertextes. Et ce que j'ai simplifié en "sheet2" pour cet exemple est en fait un autre classeur. Donc j'ai besoin que le lien soit copier et non pas une formule qui renvoie vers le lien.

Avec copy / Destination, ça fonctionne. Mais ça reste plus compliqué à mettre en place...

Une solution ?

Merci,
Vincent
 

Vinvol

XLDnaute Junior
Re : Recherche de valeurs dans colonne et copier-coller

Non, le problème vient que le réssultat, dans la cellule, ne doit pas être une formule. Car si Sheet2 est en fait un autre classeur, ça sous entend que pour que le lien fonctionne, l'autre classeur doit être ouvert. ce qui ne sera pas le cas

C'est pour ça que je cherche à copier la "valeur" de la cellule. Et que pour ça il me faut parvenir à identifier cette cellule.

En tout cas, merci beaucoup du temps que tu auras consacré à mon problème.

Vincent
 

Vinvol

XLDnaute Junior
Re : Recherche de valeurs dans colonne et copier-coller

C'est bon, je viens de trouver. Enfin, je crois... Ca marche sur mon petit fichier test, à voir sur le vrai fichier. En tout cas, j'ai inversé les zones de recherche. Ce n'est plus la Sheet1 qui cherche sont équivalent dans la 2, mais la sheet2 qui cherche son équivalent dans la 1.

Sub Test()

With Sheets("Sheet1")
Set plage = .Range("A1:A" & .Range("A65000").End(xlUp).Row)
End With

With Sheets("Sheet2")

Dim i As Integer
For i = 1 To .Range("A65000").End(xlUp).Row
If Application.CountIf(plage, .Cells(i, 1)) > 0 Then .Cells(i, 2).Copy Destination:=Sheets("Sheet1").Range("B" & i)

Next

End With

End Sub

Si quelqu'un voit une faiblesse dans ce code, qu'il n'hésite pas, j'adore les critiques !! lol

Merci,
Vincent
 
Dernière édition:

Vinvol

XLDnaute Junior
Re : Recherche de valeurs dans colonne et copier-coller

Fausse joie... j'ai simplement déplacé le problème.

Ca ne fonctionne que si les données entre sheet1 et 2 sont classées dans le même ordre. Ce qui n'est évidemment pas le cas.

Tant pis...
Vincent
 

Dranreb

XLDnaute Barbatruc
Re : Recherche de valeurs dans colonne et copier-coller

Essayez comme ça:
VB:
Sub Test()
Dim PlgSrc As Range, PlgCbl As Range, LCbl As Long, LSrc As Long
'workbooks.open etc.
With ActiveWorkbook.Worksheets("Sheet2")
   Set PlgSrc = .Range("A1:B" & .Range("A65000").End(xlUp).Row)
   End With
With ThisWorkbook.Worksheets("Sheet1") ' ou bien With Sheet1 tout simplement
   Set PlgCbl = .Range("A1:B" & .Range("A65000").End(xlUp).Row)
   End With
For LCbl = 1 To PlgCbl.Rows.Count
   On Error Resume Next
   LSrc = WorksheetFunction.Match(PlgCbl(LCbl, 1).Value, PlgSrc.Columns(1), 0)
   If Err Then LSrc = 0
   On Error GoTo 0
   If LSrc > 0 Then
      PlgCbl(LCbl, 2).Formula = "=HYPERLINK(""" & PlgSrc(LSrc, 2).Value & """)"
   Else
      PlgCbl(LCbl, 2).ClearContents
      End If
   Next LCbl
   
'activeworkbook.Close savechange:=false
End Sub
À tester (Je n'ai pas pu: chez moi j'ai des erreurs inexplicables telles que le classeur m'apparait vérolé. Il est vrai que la conversion en .XLS par le convertisseur y laisse souvent des plumes)

À +
 

Vinvol

XLDnaute Junior
Re : Recherche de valeurs dans colonne et copier-coller

Je revenais annoncer que j'avais (à nouveau !!) trouvé une solution.
Mais dans la mesure où elle me semble beaucoup moins compliquée que la votre, j'ai comme un doute...

Code:
Sub Test2()

Dim i As Integer
Dim j As Integer

    For i = 1 To Sheets("Sheet1").Range("A65000").End(xlUp).Row
    For j = 1 To Sheets("Sheet2").Range("A65000").End(xlUp).Row
    
    If Sheets("Sheet1").Cells(i, 1).Value = Sheets("Sheet2").Cells(j, 1).Value Then
    Sheets("Sheet2").Cells(j, 1).Copy Destination:=Sheets("Sheet1").Cells(i, 2)
    
    End If
    Next
    Next

End Sub

Apparemment, ça fonctionne, peu importe le classement, peu importe le nombre de lignes de part et d'autre...
Alors je pense que je vais rester là-dessus.

Dranreb, votre m'aura été précieuse !

Vincent
 

Dranreb

XLDnaute Barbatruc
Re : Recherche de valeurs dans colonne et copier-coller

Oui s'il n'y aura toujours que quelque dizaines de lignes, ça pourra suffire…
La durée sera proportionnelle au produit des deux nombres de lignes. La mienne n'est proportionnelle qu'au nombre de lignes de la plage cible.
P.S. Et de plus chacune d'elle économise 4 recherches dans les collections Sheets des classeurs.
Cordialement.
 
Dernière édition:

Vinvol

XLDnaute Junior
Re : Recherche de valeurs dans colonne et copier-coller

Oups, désolé, je n'ai pas vu ta réponse hier.
La performance du code n'e'st certainement pas la meilleure possible, mais j'avoue que ça me suffit. Et surtout, ça me renvoit bien une copie de la cellule demandé, et non pas une formule.
Merci encore,
Vincent
 

Discussions similaires

Réponses
2
Affichages
372