VBA : récupérer une case dans un tableau

4 réponses
Avatar
Guillaume Roelly
Bonjour

Je connais l'entête de ligne et l'entête de colonne (ie les noms des
cellules présentes dans A1:A30 et A1:Z1), exemple

bleu, vert, jaune, rouge en A1:A30
velo, voiture, train, en A1:Z1

Je voudrais récupérer dans une variable la case qui correspond à train
jaune

Pouvez vous me fournir un code élégant (ie itérable) car faire ça à coup
de 'if' me parait un peu cochon

Merci d'avance

Bill

4 réponses

Avatar
DanielCo
Bonjour,
Dim Ligne As Long, Col As Integer
With Application
Variable = Cells(.Match("jaune", [A1:A30], 0), .Match("train",
[A1:Z1], 0)).Address
End With
Cordialemment.
Daniel

Bonjour

Je connais l'entête de ligne et l'entête de colonne (ie les noms des cellules
présentes dans A1:A30 et A1:Z1), exemple

bleu, vert, jaune, rouge en A1:A30
velo, voiture, train, en A1:Z1

Je voudrais récupérer dans une variable la case qui correspond à train jaune

Pouvez vous me fournir un code élégant (ie itérable) car faire ça à coup de
'if' me parait un peu cochon

Merci d'avance

Bill
Avatar
MichD
Bonjour,

Si j'ai compris ce que tu cherches :

'---------------------------------------------------
Sub test()
Dim VCol As String, VLig As String
Dim X As Variant, Y As Variant, Ok As Boolean

VCol = "Train"
VLig = "Bleu"

With Worksheets("Feuil3") ' Nom Feuille à adapter
X = Application.Match(VCol, .Range("A1:H1"), 0)
If IsNumeric(X) Then
Y = Application.Match(VLig, .Range(.Cells(1, X), .Cells(30, X)), 0)
If IsNumeric(Y) Then
MsgBox .Cells(Y, X).Value & " " & .Cells(Y, X).Address
End If
End If
End With
If Ok = False Then
MsgBox "Cette donnée n'a pas de correspondance dans le tableau"
End If
End Sub
'---------------------------------------------------

MichD
---------------------------------------------------------------
Avatar
DanielCo
ou :
Variable = Cells(.Match("jaune", [A1:A30], 0), .Match("train",
[A1:Z1], 0)).Value
si c'est la valeur qui t'intéresse.
Daniel


Bonjour

Je connais l'entête de ligne et l'entête de colonne (ie les noms des cellules
présentes dans A1:A30 et A1:Z1), exemple

bleu, vert, jaune, rouge en A1:A30
velo, voiture, train, en A1:Z1

Je voudrais récupérer dans une variable la case qui correspond à train jaune

Pouvez vous me fournir un code élégant (ie itérable) car faire ça à coup de
'if' me parait un peu cochon

Merci d'avance

Bill
Avatar
MichD
J'ai omis une ligne de code dans la procédure :

If IsNumeric(Y) Then
MsgBox .Cells(Y, X).Value
Ok = True '<<<<<<<< ici
End If


MichD
---------------------------------------------------------------