VBA: Trouver la valeur d'une cellule par rapport á la position d'une autre

doomaster66

XLDnaute Nouveau
Bonjour,
á l'aide d'une fonction, je cherche dans une plage de cellule la valeur "Toto", elle se trouve par exemple en $C$5, avec quelle commande puis je lire la valeur de la cellule á droite de toto ($D$5) ?
Merci.
 

doomaster66

XLDnaute Nouveau
Re : VBA: Trouver la valeur d'une cellule par rapport á la position d'une autre

Bonjour,
je reviens vers toi apres un week-end bien mérité ;)
J'ai réussi á me servir de "range", mais je ne pense pas que c'est ce qui est adapté á mon pb.

J'avais utilisé cette fonction:

Function typevisite(MaPlage As Range, MaCellRef As Range)

Dim c As Range
Dim mavisite As String
Application.Volatile True
For Each c In MaPlage
If c.Value = MaCellRef.Value Then
mavisite = c.Address
End If
Next
typevisite = Range(mavisite).Offset(0, 1)

End Function

Dans ma cellule, je saisie =typevisite(feuille2!A2:I16;feuille1!B3). Mais cela ne fonctionne que si je valide une cellule dans mon tableau de la feuille2.

Je joins un exemple de mon fichier pour une meilleure compréhension.

Merci.
 

Pièces jointes

  • Exemple.xls
    25.5 KB · Affichages: 84
  • Exemple.xls
    25.5 KB · Affichages: 88
  • Exemple.xls
    25.5 KB · Affichages: 90

eriiic

XLDnaute Barbatruc
Re : VBA: Trouver la valeur d'une cellule par rapport á la position d'une autre

Bonjour,

- Tu ne précises pas qu'il faut qu'il s'adresse à la feuille PM.
typevisite = Range("PM!" & mavisite).Offset(0, 1)
Sinon ta fonction est bien appelée, le fait de valider avec PM activé fait que la valeur de la bonne feuille est du coup ramenée.
- .volatile est inutile dans ton cas, je suppose que tu l'as ajouté pour essayer de résoudre ton pb mais là tu consommes des ressources pour rien.
- une fois Vehicle trouvé, tu peux sortir de la boucle par exit for, inutile de continuer.

Sinon tu peux chercher Vehicle dans la plage avec .find :
Code:
Function typevisite(MaPlage As Range, MaCellRef As Range) as String
    Dim c As Range
    typevisite = "inconnu"
    Set c = MaPlage.Find(MaCellRef, LookIn:=xlValues, lookat:=xlWhole)
    If Not c Is Nothing Then typevisite = c.Offset(0, 1)
End Function
eric
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 086
Messages
2 085 197
Membres
102 814
dernier inscrit
JLGalley