Affecter à une variable la valeur d'une cellule

Dim valref As Integer 
Dim ref as string 
Dim lign as integer 

Public Sub emplacement () 

lign = 2 
valref = 1 
ref = laref () 

Public Sub enplacement2() 

lign=2 
valref = 2 
ref = laref () 

Public Function laref () 

Select Case valref 

Case 1: ref = Cells(lign, 1) 
Case 2: ref = Cells(lign, 18) 
Case 3: ref = Cells(lign, 22) 

End Select 

End Function

Bonjour,

Je suis embêtée car je souhaite que la variable ref, prenne la valeur d'une certaine cellule déterminée grâce à la valeur de valref. Pour cela j'utilise Select Case. J'ai réalisé ce code or ça ne fonctionne pas, pourtant quand je fais le mode pas à pas détaillé je passe bien dans la fonction mais ref ne prend pas la valeur de la cellule indiquée la variable reste vide ... et si j'affecte directement par exemple ref = cells (lign, 1) ça fonctionne, donc je ne comprend vraiment pas d'où vient mon erreur.

Pouvez-vous m'aider ?

Merci d'avance pour vos retours.

Bonjour,

Il manque des End SUb à la fin de chaque code Emplacement. Mais pourquoi vous faites ce tour... votre code peut être ceci

Public Sub emplacement () 
Dim ref as integer
ref = cells(2, 1)
End sub
Cordialement

Bonjour Dan,

C'est une erreur de recopie de ma part les end sub sont présents en réalité. Mon code est en réalité beaucoup plus important et lign vient ensuite à changer de valeur mais ici ça n'avait pas besoin d'apparaître j'ai omis de le préciser...

Re

ce serait mieux de voir le code complet...

Cordialement

Bonjour,

Si je comprends bien, vous voulez que ref retourne une valeur string d'une cellule, laquelle cellule est obtenue d'après valref grâce à la fonction laref.

Ne chercheriez vous pas à obtenir quelque chose du genre :

Public Sub emplacement () 

Dim VarEntier%
ref = laref (VarEntier) 

end sub

Public Function laref (valref as integer) as string

Dim RenvoiChaine$

Select Case valref
Case 1: RenvoiChaine = Cells(lign, valref).value 'valref vaut 1 => RenvoiChaine contient la valeur de la cellule cells(lign,1)
Case 18: RenvoiChaine = Cells(lign, valref).value 'valref vaut 18 => RenvoiChaine contient la valeur de la cellule cells(lign,18)
Case 22: RenvoiChaine = Cells(lign, valref).value 'valref vaut 22 => RenvoiChaine contient la valeur de la cellule cells(lign,22)
Case else: RenvoiChaine = "" 'Dans les autres cas, RenvoiChaine est vide
End Select 

laref = cstr(RenvoiChaine) 'laref retourne RenvoiChaine

End Function

Cordialement,

Simplifié comme tel :

Public Sub emplacement () 

Dim VarEntier%
ref = laref (VarEntier) 

end sub

Public Function laref (valref as integer) as string

Dim RenvoiChaine$

Select Case valref
Case 1, 18, 22: RenvoiChaine = Cells(lign, valref).value 'RenvoiChaine retourne la chaine des cellules (Lign, Valref) si valref vaut 1, 18 ou 22
Case else: RenvoiChaine = "" 'Dans les autres cas, RenvoiChaine est vide
End Select 

laref = cstr(RenvoiChaine) 'laref retourne RenvoiChaine

End Function

Re

ce serait mieux de voir le code complet...

Cordialement

Le code est beaucoup trop long, ça n'aurait aucun intérêt pour ma question et j'ai des informations confidentiels dedans

Simplifié comme tel :

Public Sub emplacement () 

Dim VarEntier%
ref = laref (VarEntier) 

end sub

Public Function laref (valref as integer) as string

Dim RenvoiChaine$

Select Case valref
Case 1, 18, 22: RenvoiChaine = Cells(lign, valref).value 'RenvoiChaine retourne la chaine des cellules (Lign, Valref) si valref vaut 1, 18 ou 22
Case else: RenvoiChaine = "" 'Dans les autres cas, RenvoiChaine est vide
End Select 

laref = cstr(RenvoiChaine) 'laref retourne RenvoiChaine

End Function

J'ai essayé ça ne fonctionne pas du tout et je ne comprend pas pourquoi on rajoute les variables renvoichaine et varentier ?

j'ai réussi à résoudre mon problème merci quand même

Rechercher des sujets similaires à "affecter variable valeur"