Récupérer valeur cellule

Bonjour,

D'ordinaire, j'utilise l'instruction suivante pour aller chercher la valeur d'une cellule et la mettre dans une autre:

Sheets(CStr(xxx)).Cells(yyy, rech.Column).Value = Workbooks(fic).Sheets(feu).Range("A1").Value

Cette fois-ci, je cherche à récupérer la valeur d'une cellule, connaissant la colonne (C), mais ne connaissant pas le numéro de ligne, seulement un "nom" situé dans la colonne A (en face de la valeur à récupérer), mais qui peut selon le cas changer de ligne. Mais dans tous les cas, le nom dans la colonne A correspondant à la valeur de la colonne C sera situé sur la même ligne.

Comment feriez-vous ?

Et, de façon plus générale, si je ne connaissais pas la lettre de la colonne concernée non plus, mais seulement des coordonnées "nominatives" pour la cellule, du type "Mesure1" sur une ligne (dont la colonne est connue) et "janvier" sur une colonne (dont la ligne est connue), au lieu de H8, par exemple, quelle est la syntaxe pour aller récupérer la valeur ?

Merci d'avance.

Bonjour

Pour rechercher la ligne tu peux utiliser

Pour l'exemple écris "Nom" (sans les guillemets) dans la case B8

Option Explicit

Sub Recherche()
Dim Lg
Dim Cel As Range

  Set Cel = Columns(2).Find(what:="Nom", LookIn:=xlValues, lookat:=xlWhole)
  If Not Cel Is Nothing Then
    MsgBox "Ligne trouvée " & Cel.Row  ' Retourne 8
  Else
    MsgBox "Non trouvé"
  End If
  '
  'Attention au résultat
  '
  Lg = Application.Match("Nom", Columns(2), 0)
  If Not IsError(Lg) Then
    MsgBox "Ligne trouvée " & Lg  ' Retourne 8
  Else
    MsgBox "Non trouvé"
  End If
  '
  ' Dans ce cas tu trouveras la ligne en fonction du départ
  '
  Lg = Application.Match("Nom", Range("B5:B100"), 0)
  If Not IsError(Lg) Then
    MsgBox "Ligne trouvée " & Lg  ' Retourne 4
  Else
    MsgBox "Non trouvé"
  End If

End Sub

Merci pour ta réponse, mais je ne suis pas certain que cela corresponde à mon attente...

Dit plus simplement (je l'espère ! ), à partir du fichier ci-joint: je voudrais récupérer la valeur de la mesure2, sachant uniquement que mesure2 se situe dans la colonne B, et que valeur correspond à la colonne F.

Tout en sachant que je vais chercher cette info dans un autre classeur, que nous appellerons ainsi:

Workbooks(fic).Sheets(feu)
74exemple.zip (6.46 Ko)

Bonjour

Adapté du code de mon premier message

Que dois-je mettre à la place de:

With Sheets("Fichier1")

?

Le nom de la feuille (et du classeur) où je vais chercher ma valeur ou celui de celle où je vais mettre la valeur ?

Bonjour

Normalement ton fichier dans lequel tu vas chercher la valeur (préalablement ouvert)

Je pense que fic et feu sont des variables

With Workbooks(fic).Sheets(feu)

Ok, je vais essayer ton code avec ceci alors. Dernière chose tout de même: dans ton cas on affiche une fenêtre pour nous indiquer le résultat, moi je souhaiterais que ce résultat se mette dans une cellule particulière d'un autre classeur. Puis-je faire ceci via l'instruction suivante ?

Sheets(CStr(xxx)).Cells(yyy, rech.Column).Value = Recherche("nom_recherche")

Edit: je viens de tester, j'obtiens une incompatibilité de type sur:

Recherche = .Range("F" & Cel.Row)

Edit2: je crois que c'est bon !! Je viens de "convertir" les points en virgules, et ça a l'air de passer ! Merci beaucoup !!

-- 11 Juil 2011, 15:30 --

Je me permets de rajouter une petite question: si un élément supplémentaire devait intervenir, à savoir:

je voudrais cette fois-ci récupérer la valeur de la mesure2 de type A.

Que faudrait-il rajouter à la fonction Rechercher pour considérer ceci ? Il faudrait donc faire une recherche dans la colonne B pour rechercher mesure2, et que celle-ci coïncide avec la valeur de type A (voir fichier joint).

34exemple2.zip (6.47 Ko)

Bonjour

Une autre version

Encore une fois merci Banzai64, mais je crains de ne pas avoir saisi... Ne faudrait-il pas 2 paramètres à la fonction ? En effet, pour arriver sur la cellule voulue, on veut connaître les "noms" des colonnes B et C, et la colonne de la valeur (déjà connue comme pour le cas précédent).

-- 11 Juil 2011, 16:12 --

Même si ce n'est pas correct, je voyais plutôt quelque chose de ce type (en se basant sur ta première fonction):

Function Recherche3(Nom1 As String, Nom2 As String) As String
Dim Cel1 As Range
Dim Cel2 As Range

  With Workbooks(fic).Sheets(feu)
    Set Cel1 = .Columns(2).Find(what:=Nom1, LookIn:=xlValues, lookat:=xlWhole)
    Set Cel2 = .Columns(3).Find(what:=Nom2, LookIn:=xlValues, lookat:=xlWhole)
    If ((Not Cel1 Is Nothing) And (Not Cel2 Is Nothing)) Then
      Recherche3 = .Range("H" & Cel1.Row)
    End If
  End With
End Function

Bonjour

Moi je ne te suis plus

La fonction reçoit bien les deux noms de la recherche

comme indiqué tu sélectionnes une cellule de la colonne B et tu cliques sur le bouton tu obtiens bien la réponse

Ce n'est pas cela que tu voulais ?

Désolé moi j'ai compris ça

Redonnes un exemple de ce que tu veux

Je tente d'être plus clair. Dans le fichier joint, pour obtenir la valeur 23, on sait uniqement qu'il s'agit de la valeur combinant mesure1 et C. On sait que mesure1 se trouve dans la colonne B (mais il y en a plusieurs !) et C dans la colonne C (bon, mal choisi, on pourrait s'y perdre ^^), et là aussi, il pourrait y en avoir plusieurs, même si ce n'est pas le cas ici.

Ainsi, pour trouver la valeur recherchée, je pensais qu'il fallait une fonction du type Rechercher ("mesure1","C") puisqu'il faut nécessairement combiner les valeurs de deux colonnes pour obtenir le résultat voulu.

19exemple3.zip (7.41 Ko)

Bonjour

J'ai vraiment du mal

Clairement tu as le nombre (ici 23) et tu cherches "Mesure 1" et "C" ou tu as "Mesure 1" et "C" et tu cherches 23 ?

Avec ta réponse je vais sans doute comprendre sinon

A te lire

J'ai mesure1 et C et je cherche à récupérer 23. Le truc, c'est que je ne sais pas où sont placés mesure1 et C dans leur colonne respective. Je pense que c'est plus clair !

Bonjour

Donc le fichier que je t'ai fait correspond clairement à la demande

Comme je n'ai pas tous les tenants et aboutissants de ton projet (pas besoin non plus) je fais la recherche dans une feuille "Fichier1" du même fichier

En sélectionnant "Mesure 1" puis en cliquant sur le bouton on obtient bien 23

A voir

Ah... Excuse-moi d'avoir tant insisté alors..

Dans ce cas, je ne parviens pas à l'appliquer à "mon cas". Comme je l'ai avancé précédemment, je désire aller chercher cette fameuse valeur dans un autre classeur (déjà ouvert) (Workbooks(fic).Worksheets(feu)), pour aller la mettre ici: Sheets(CStr(xxx)).Cells(yyy, rech.Column).

Du coup... quelle serait la syntaxe à mettre en place en prenant pour exemple que la valeur que je cherche se situe dans la colonne H, pour colonne B valant "mesure2" et colonne C valant "D" ?

Bonjour

A essayer

Resultat = Recherche("Mesure2" & "D")

ou plus directement

Sheets(CStr(xxx)).Cells(yyy, rech.Column) = Recherche("Mesure2" & "D") 

et dans le code de la macro Recherche

With Workbooks(fic).Sheets(feu)

à la place de

With Sheets("Fichier1")

Je viens d'essayer, et ça semble fonctionner !!

A un détail près... A la ligne de la fonction:

Recherche = .Range("G" & Cel.Row)

Quelque soit la lettre choisie, ici G, la fonction va me récupérer la valeur de la colonne d'avant, donc ici F ! Pourquoi ?

Bonjour

Comme j'insère une colonne à la place de B

Toutes les colonnes suivantes seront décalées de 1

Si la donnée à récupérer est en colonne F il faudra marquer Recherche = .Range("G" & Cel.Row)

Si la donnée à récupérer est en colonne G il faudra marquer Recherche = .Range("H" & Cel.Row)

etc ....

Désolé de ne pas l'avoir précisé

Ok, merci pour la précision !

Bien que cela ne me dérange nullement, était-ce "obligé" de passer par là ?

Bonne soirée !

Rechercher des sujets similaires à "recuperer valeur"