Rechercher une valeur dans une autre feuille et se placer sur la ligne concernée

MACx

XLDnaute Occasionnel
Bonjour à vous !

J'ai deux feuilles avec en colonne A des n°Id et en colonne B des Noms
en Feuil1 la liste est classée par ordre alphabétique croissant (Colonne B)
en Feuil2 la liste est classée par ordre croissat des n°Id (Colonne A)

(Bien évidement cette liste contient plusiseurs centaines de lignes)

Voici mon problème:

Je souhaite par un double click depuis la Feuil1 (ou autre moyen plus facile, si ça existe) Clicker sur une cellule de la colonne A et me retrouver dans la Feuil2 et à la même ligne du n°Id cliqué

Exemple (cf PJ)

En double cliquant sur A2 de la Feuil1, je me retrouve en A8 de la Feuil2

Merci d'avance de votre aide et du temps que vous me consacrerez !
 

Pièces jointes

  • XLDL_MACx01.xlsx
    8.9 KB · Affichages: 44
Dernière édition:

titiborregan5

XLDnaute Accro
Re : VBA Rechercher une valeur dans une autre feuille et se placer sur la ligne cocne

A mettre en Feuille 1
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

r = Application.Match(Target, Sheets(2).Range("a:a"), 0)


Application.Goto Sheets(2).Range("a" & r), scroll:=False
MsgBox "Votre demande se trouve en A" & r & " !"

End Sub

Solution trouvée ici : Affichage d'une autre feuille apres double clic sur une cell : Excel - VBA
 
Dernière édition:

Si...

XLDnaute Barbatruc
Re : VBA Rechercher une valeur dans une autre feuille et se placer sur la ligne cocne

salut

même genre mais autre outil et gestion d'erreur
Dans la page de code de la feuille de départ
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal R As Range, Cancel As Boolean)
  If Intersect(R, [A:A].SpecialCells(2)) Is Nothing Then Exit Sub
  On Error Resume Next 'pas de trace dans l'autre feuille
  Application.Goto (Feuil2.[A:A].Find(R, , , 1)) ', 1 à rajouter pour se retrouver en haut de l'affiche
End Sub
 

MACx

XLDnaute Occasionnel
Re : VBA Rechercher une valeur dans une autre feuille et se placer sur la ligne cocne

Salut les cyber-amis,

Aucune des deux dernières solutions proposées fonctionne :(
Je ne sais pa si c'est parceque je ne sais pas faire de copier coller en modifiant le nom de mes feuillles.
Sachant que sur mon fichier original je veux aller de la Feuil1("Resultat") vers Feuil7("Origine")

Titi, sachant que dans ton cas j'obtien le message d'erreur suivant :
Erreur d'exécution '13':
Incompatibilité de type
Et c'est la ligne :
Application.Goto Sheets(7).Range("a" & R), scroll:=False
qui est surlignée jaune

SI..., dans ton cas j'obtiens le message d'erreur :
Erreur d'exécution '1004':
Pas de cellules correspondantes

NB: les colonnes A & B de chaque feuille contiennent exactement les même données sauf que dans l'une c'est classé par ordre croissant sur le colonne A et sur l'autre par ordre croissant de la colonne B

Merci à vous pour votre aide :)
 
Dernière édition:

MACx

XLDnaute Occasionnel
Re : VBA Rechercher une valeur dans une autre feuille et se placer sur la ligne cocne

Les amis, ne me demandez pas comment j'ai fait, je vous raconte...

Ne connaissant ABSOLUMENT RIEN en VBA, et n'ayant rien à perdre si ce n'est qu'à bousiller mon fichier excel je me suis amusé à "mixer" vos deux propositions et voici le résultat !

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

R = Application.Match(Target, Sheets(1).Range("A:A"), 0)

Select Case Target

Case Is = Target

Application.Goto Worksheets(2).Range("A" & R), Scroll:=False

End Select

End Sub

Alors en faisant le test je n'otient plus aucune erreur ! (ce qui est déjà génial)
En double cliquant sur une cellule de la colonne A, je suis bien redirigé vers ma Feuil2 ET ver la LIGNE correspondante
mais pas sur le même ID qui se trouve bien évidement sur une autre ligne...

Exemple: En cliquant sur Feuil1.A2 (653) je devrais me retrouver en Feuil2.A8, or je me retrouve en Feuil2.A2

NB: Titi, avant je pense que j'obtenais une erreur à cause de la syntaxe ci dessous :
R = Application.Match(Target, Sheets(1).Range("A:A"), 0)
J'ai tout simplement remplacé le 2 par un 1 (sans savoir réellement ce que je faisais)

Si vous pouviez m'aider encore un petit peu svp ?!

Merci :)
 

titiborregan5

XLDnaute Accro
Re : VBA Rechercher une valeur dans une autre feuille et se placer sur la ligne cocne

sheets(2) = feuille n°2 (attention si elle est cachée!)
sheets("Resultat") te renverra vers la feuille résultat, peu importe son positionnement dans le classeur.
C'est là dessus que tu dois jouer...
VB:
PrivateSub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel AsBoolean)

r = Application.Match(Target, Sheets("origine").Range("a:a"), 0)


Application.Goto Sheets("origine").Range("a" & r), scroll:=False
MsgBox "Votre demande se trouve en A" & r & " !"

End Sub


 
Dernière édition:

MACx

XLDnaute Occasionnel
Re : VBA Rechercher une valeur dans une autre feuille et se placer sur la ligne cocne

Titi,

je ne comprends pas pourquoi en cliquant sur Sheets("origine") tu veux aller sur goto Sheets("origine") ???

en fait ta solution me fait juste obtenir un MsgBox ! Et ce n'est pas ce que je souhaite.
Je veux comme résultat aller en Sheets("Resultat") et à la ligne correspondante, selon où j'ai cliqué en sheets("Origine")

Merci, et désolé de beaucoup te solliciter finalement.
 
Dernière édition:

Si...

XLDnaute Barbatruc
Re : Rechercher une valeur dans une autre feuille et se placer sur la ligne concernée

salut

l'erreur dans mon code provient d'une colonne A vide !
Voir l'exemple avec une macro qui évite les erreurs
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal R As Range, Cancel As Boolean)
  Dim Est As Range
  If Intersect(R, Range("A2", Cells(Rows.Count, 1).End(xlUp))) Is Nothing Then Exit Sub
  Set Est = Feuil2.[A:A].Find(R, , , 1)
  If Not Est Is Nothing Then Application.Goto Est
End Sub
 

Pièces jointes

  • ChercheTrouve(VBA).xlsm
    23.2 KB · Affichages: 15

titiborregan5

XLDnaute Accro
Re : VBA Rechercher une valeur dans une autre feuille et se placer sur la ligne cocne

Titi,

je ne comprends pas pourquoi en cliquant sur Sheets("origine") tu veux aller sur goto Sheets("origine") ???

en fait ta solution me fait juste obtenir un MsgBox ! Et ce n'est pas ce que je souhaite.
Je veux comme résultat aller en Sheets("Resultat") et à la ligne correspondante, selon où j'ai cliqué en sheets("Origine")

Merci, et désolé de beaucoup te solliciter finalement.
Et bien tu changes origine par résultat et c'est tout.
La prochaine fois fait un classeur test qui se rapproche plus de ton classeur réel, on y passera moins de temps.
De plus la msgbox est juste là pour que tu puisses "confirmer" le résultat de la recherche! libre à toi de la supprimer!
Pour finir le code de Si, qui je salue, est nettement car il intègre la gestion d'erreur!
 

MACx

XLDnaute Occasionnel
Re : Rechercher une valeur dans une autre feuille et se placer sur la ligne concernée

Salut titi, et SI...

Merci pour vos propositions, et encore une fois désolé de vous faire perdre votre temps, j'imagine que je dois vous faire râler mdrrr

SI... Ta proposition fonctionne parfaitement sur le fichier d'exemple alors que sur le mien non.

Après un peu de réflexion et sous le conseil de Titi, j'ai amené mon fichier exemple à être le plus semblant possible à celui d'origine et là... BAM ! Ta proposition ne fonctionne plus ! :(

Explication:
Dans mon fichier d'origine mes cellules de ma Feuil1 sont en réalité sous forme de formule, comme ci dessous.

Feuil1.A2 = Feuil3!A2 (Feuil3 étant en réalité une extraction d'une base de données SQL)

SI..., j'ai donc modifié mon fichier Test et tu pourras voir que du coup ton VBA à mon grand malheur ne fonctionne pas :(

Merci de m'aider!

PS: j'imagine que vous vous posez la question pourquoi faire un Feuil1.A2=Feuil3!A2 !
C'est parce que les données des colonnes C, D, E, etc de la Feuil3 je n'en ai pas réellement besoin pour ce type "d'exercice" mais ils me sont indispensable pour autre chose.

Pour ce DoublieClique je n'ai besoin de des colonnes A et B

Merci beaucoup les gars! Vraiment.
 

Pièces jointes

  • ChercheTrouve(VBA).revisité.xlsm
    21.8 KB · Affichages: 29

MACx

XLDnaute Occasionnel
Re : Rechercher une valeur dans une autre feuille et se placer sur la ligne concernée

MDRRRR !!!

C'est aussi une autre solution ! :)
Merci beaucoup JBOBO (qui m'a déjà aidé autre fois!)

Si... J'ai refait ma Feuil1 de telle manière à ce que mes colonnes A et B ne soient plus de formules, et du coup tout fonctionne à merveille !!

Du coup j'ai maintenant DEUX solutions que je vais utiliser ! :)

Un grand merci à titiborregan5 avec qui j'ai appris quelques trucs également. Une formule VBA dont je me sers du coup pour autre chose ;)
 

Discussions similaires

Statistiques des forums

Discussions
312 553
Messages
2 089 529
Membres
104 205
dernier inscrit
mehaya63