Utiliser le contenu d'une cellule comme variable dans VBA

Salut,

Tout est dans le titre. Je m'explique

Sur des onglets, j'ai des bases de données dont le nombre de colonnes et les entêtes de colonnes sont variables. J'aurais besoin au lancement de la macro d'une boucle qui me crée autant de variables qu'il y a de colonnes avec le nom de la variable = le nom de la feuille concaténé avec l'entête de la colonne et la valeur de la variable le n0 de la colonne (ça je sais faire).

Est ce qu'il est possible de créer une variable dont le nom est le contenu d'une cellule ou est ce qu'il faut l'écrire en dur dans la macro pour chaque variable (et avec pas loin de 200 variables je vais bien me marrer, avec en plus de grosses modifs chaque fois qu'une donnée est rajoutée dans un des onglets) ?

Merci d'avance.

Manu

Bonjour Manu31,

Voici un code qui te créera autant de variable que de colonnes, par contre je n'ai pas compris ton critère ( en gras) :

nom de la variable = le nom de la feuille concaténé avec l'entête de la colonne et la valeur de la variable le n0 de la colonne (ça je sais faire).

Sub test()
Dim dercol&, i&
Dim variable As String

dercol = ActiveSheet.Cells(1, Cells.Columns.Count).End(xlToLeft).Column
For i = 1 To dercol
    variable = ActiveSheet.Name & " - " & Cells(1, i) & " - N° " & i
Next i

End Sub

Je me suis mal exprimé.

Dans la feuille " tutu " j'ai les entêtes suivantes (contenu de la cellule de la première ligne de chaque colonne) :

  • Colonne A " toto "
  • Colonne B " tata "
  • Colonne C " titi "

J'ai besoin de créer une variable qui identifie la feuille et la colonne (par concaténation ça ira très bien) et de lui affecter comme valeur le n° de la colonne correspondante. Ca donnerait :

  • une variable " tututoto " affectée de la valeur 1
  • une variable " tututata " affectée de la valeur 2
  • une variable " tututiti" affectée de la valeur 3

Le but est de pouvoir identifier une colonne par son entête plutôt que par son numéro, et de retrouver la valeur de la ligne X et la colonne " tata " par un simple

Sheets("Tutu").Cells(X, tututata)

Vu le nombre de feuilles et de colonne dont j'ai besoin, il faut que je fasse ça par une boucle, sinon je vais devoir paramétrer en dur des centaines de variables et ce à chaque fois que je rajouterai une feuille ou rajouterai ou déplacerait une colonne.

Manu

Bonjour,

Pour cela, il faut utiliser une collection avec par exemple, le code ci-dessous

voir exemple dans classeur joint.

 
 Sub test()

    Dim variables_cellule As New Collection
    Dim cell As Range

    For Each cell In ActiveSheet.UsedRange.Columns("A").Cells
        variables_cellule.Add Item:=cell, Key:=cell.Value
    Next

    'test avec cellule dont la valeur est nom2
    MsgBox variables_cellule("nom2").Address

End Sub
62classeur2.xlsm (22.55 Ko)

Merci de vos réponses.

En fait un de mes collègues de boulot a jeté un œil sur ce que je faisais, et m'a expliqué les requêtes SQL. Du coup je vais passer par cet outil, ça me partait plus adapté et moins usine à gaz.

Manu

Rechercher des sujets similaires à "utiliser contenu comme variable vba"