XL 2013 Récupérer coordonnées cell après recherche

Phillip

XLDnaute Occasionnel
Bonjour,

Je récupère une valeur numérique d'un onglet (de 0 à 99). Je voudrais, dans un autre onglet chercher cette valeur numérique dans une colonne. Le problème c'est que cette colonne peut comporter des dates, d'autres valeurs numériques correspondant à ma recherche.

1) Comment puis-je faire pour rechercher UNIQUEMENT la cellule qui ne contient QUE ma valeur numérique ?
Dans mon fichier exemple, je voudrais trouver "2" par exemple dans l'onglet 1, colonne N, et uniquement 2


Ensuite, une fois cette valeur trouvée, je voudrais récupérer le numéro de ligne et et de colonne de la cellule où j'ai trouvé ma valeur, ici ligne 21, colonne N, pour pouvoir me déplacer dans l'onglet par rapport à cette cellule ...Comment ?

Merci de votre aide

Cordialement

Phillip
 

Pièces jointes

  • TEST.xlsm
    9.1 KB · Affichages: 26

vgendron

XLDnaute Barbatruc
Bonjour
il faut jouer avec les options lookin et lookat de la fonction find (voir aide VBA)
VB:
Sub cherche()

valCHerchée = 2
With ActiveSheet.Range("N:N")
    Set c = .Find(valCHerchée, lookat:=xlWhole)
    If Not c Is Nothing Then
        MsgBox ("Valeur exacte trouvée en: " & c.Address)
    End If
   
End With
End Sub
 

Phillip

XLDnaute Occasionnel
Bonjour,

La message box me donne les coordonées de la cellule dans laquelle se trouve Valcherchée, mais je voudrais mettre ces coordonnées dans une variable et me décaler dans le tableau par rapport à ces coordonnées variables pour y coller une valeur...je peine un peu...

merci

Cordialement
 

Phillip

XLDnaute Occasionnel
Si c'est une plage, je dois pouvoir en extraire le rang et la colonne en faisant :

VrangC=c.row
VcolC=c.column

pourtant, ça ne marche pas....

Je suis perplexe et j'ai la tête farcie, je ne vois plus rien...

merci de vos éclaircissements

Cordialement
 

vgendron

XLDnaute Barbatruc
effectivement. tu dois pouvoir le faire
regarde. dans le code ci dessous j'inscrit les infos (ligne et colonne) dans les cellules A1 et A2

VB:
Sub cherche()

valCHerchée = 2
With ActiveSheet.Range("N:N")
    Set c = .Find(valCHerchée, lookat:=xlWhole)
    If Not c Is Nothing Then
        MsgBox ("Valeur exacte trouvée en: " & c.Address)
        Range("A1") = "ligne: " & c.Row
        Range("A2") = "colonne: " & c.Column
    End If
   
End With
End Sub
 

Phillip

XLDnaute Occasionnel
Bonjour,

Je suis encore perdu dans mes range..

A partir de ce qui a été dit plus haut :

Sub cherche()

valCHerchée = 2
With ActiveSheet.Range("N:N")
Set c = .Find(valCHerchée, lookat:=xlWhole)
If Not c Is Nothing Then
MsgBox ("Valeur exacte trouvée en: " & c.Address)
End If

End With
End Sub

Je voudrais me décaler dans une cellule à partir de c. j'ai donc bêtement fait après le set c
c.Offset(0 - 7).value= toto (toto contenant une valeur), et cela ne marche pas.

j'ai du mal à voir ce qu'est "c" : si c'est une cellule, pourquoi ne puis-je pas me décaler ?

J'ai essayé de faire aussi
set d=c.offset(0,7) et puis après travailler sur d, mais même punition...

Merci de vote aide

Cordialement
 

Phillip

XLDnaute Occasionnel
Meci vgendron...
j'ai contourné le problème finalement...

Dernière question please sur le sujet. J'ai

c = .Find(valCHerchée, lookat:=xlWhole)
vcolnum = c.Column
vrgnum = c.Row

si valCherchée est une valeur numérique, ça marche, mais imaginons que valCherchée soit par exemple : 24bis

La ligne de script fonctionne pour affecter 24bis dans c, mais je n'arrive pas après à trouver le rang de 24bis (vrgnum)

Merci

Cordialement
 

vgendron

XLDnaute Barbatruc
je ne comprend pas trop ce que tu cherches à faire..
trouver une valeur (ou un texte), c'est la meme fonction
récupérer l'adresse, la ligne ou la colonne de la cellule qui contient ta valeur , tu as déjà les infos
tu peux aussi mettre valeur ou ce que tu veux, dans la cellule d'a coté....
regarde le code ci dessous
VB:
Sub cherche()

valCherchée = 2
With ActiveSheet.Range("N:N")
    Set c = .Find(valCherchée, lookat:=xlWhole)
    If Not c Is Nothing Then
        MsgBox ("Valeur exacte trouvée en: " & c.Address)
        MsgBox ("ligne: " & c.Row)
        MsgBox ("colonne: " & c.Column)
        c.Offset(0, 1) = 10 * valCherchée
        c.Offset(0, 1).Select
    Else
        MsgBox (valCherchée & " n'a pas été trouvée")
   End If
   
End With
End Sub
 

vgendron

XLDnaute Barbatruc
si tu écris
c=24bis
alors. la variable c, prend la valeur contenue dans la VARIABLE 24bis
si tu veux que c prenne le texte 24bis, il faut écrire
c="24bis" avec les guillemets
si tu veux que c prenne la valeur 2, alors, il suffit d'écrire c=2

VB:
valCherchée = 2
TEXTECherché="24bis"
With ActiveSheet.Range("N:N")
   Set c = .Find(valCherchée, lookat:=xlWhole)

   If Not c Is Nothing Then
        MsgBox ("Valeur exacte trouvée en: " & c.Address)
        MsgBox ("ligne: " & c.Row)
        MsgBox ("colonne: " & c.Column)
        c.Offset(0, 1) = 10 * valCherchée
        c.Offset(0, 1).Select 'le select ne sert à rien pour la macro. juste à te montrer que VBA voit ca comme une range qu'il peut aller sélectionner
   Else
        MsgBox (valCherchée & " n'a pas été trouvée")
   End If

Set d= .Find(TEXTECherché, lookat:=xlWhole)
   If Not d Is Nothing Then
        MsgBox ("Valeur exacte trouvée en: " & d.Address)
        MsgBox ("ligne: " & d.Row)
        MsgBox ("colonne: " & d.Column)
        d.Offset(0, 1) = TEXTECherché & "autre texte"
        d.Offset(0, 1).Select
   Else
        MsgBox (TEXTECherché& " n'a pas été trouvée")
   End If
   
End With
End Sub
 

Phillip

XLDnaute Occasionnel
Merci encore...Mais mon ValCherchee va prendre parfois une valeur numérique et parfois du texte, comme 24bis.

Ne puis-je pas en une seule recherche trouver l'une ou l'autre des valeurs et en tirer les numéros de ligne et colonne, ?

Inutile de dire que valcherchee n'est pas fixe, c'est le contenu d'une cellule...

Merci

Cordialement
 

Discussions similaires

Réponses
6
Affichages
259
Réponses
20
Affichages
366

Statistiques des forums

Discussions
312 838
Messages
2 092 673
Membres
105 482
dernier inscrit
Eric.FKF