IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[VBA] Variable dynamique


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 67
    Par défaut [VBA] Variable dynamique
    Bonjour a tous,
    Je doit créer un XML a partir d'une feuille excel.
    Ma fonction récupère les données nécessaires dans la feuille mais je ne sais pas à l'avance combien de colonne contient la feuille. J'ai donc besoin d'une variable dynamique pour les récupérer.

    je voudrai faire un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        Dim j As Integer
        For j = 1 To nbCol
            valeur & j = ThisWorkbook.Worksheets(myFilename).Cells(1, j).Value
        Next j
    Mais malheureusement ça ne passe pas, des idées ??

  2. #2
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Des idées plein
    mais regarde cette contribution qui recense la majeur partie des solution possible

    Comment connaître les numéros des dernière ligne et dernière colonne renseignées d'une plage de données.

    note : j'ai des doute sur le valeur & j = mais je dit juste ca en passant

    edit oups je crois que j'ai compris
    ce n'est pas le nombre de colonne le problème mais le nombre de variable
    essaye avec un tableau que tu dimentionne a la bonne taille dans le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim variable() as string 'enfin tu choisi le type
     
     
    redim variable(1 to nbcol)
    for j=1 to nbcol
    variable(j)=......
    next j
    re edit : et tant que l'on y est Bonjour Dead

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub test()
     
    Dim j As Integer
    Dim valeur As String
     
    valeur = ""
     
    For j = 1 To Range("A1").End(xlToRight).Column
        valeur = valeur & Cells(1, j).Value
    Next j
     
    MsgBox valeur
     
    End Sub
    Et si, tu sais combien de colonnes contient ta feuille à l'avance Il suffit d'utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1").End(xlToRight).Column
    pour connaître la dernière colonne non vide de la première ligne

    Ensuite, je n'ai pas très bien compris ce que tu voulais faire dans ta boucle. J'ai donc supposé que tu voulais incrémenter une variable de texte pour y mettre, à la suite (sans espaces, tu t'occuperas d'arranger cela comme tu le souhaites), les données de la première ligne. Est-ce bien cela?

    EDIT : et j'ai encore croisé le Krovax et ses idées

    Et RE-EDIT : il semble que je n'avais pas, moi aussi, compris le truc La réponse de Krovax me paraît bien Bonne chance pour la suite !

    Et FIN-EDIT : je ne t'ai pas dit bonjour Alros bonjour, Krovax

  4. #4
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 67
    Par défaut
    Mdr merci les gars.

    En fait l'idée plus précise c'est d'avoir autant de variable que de colonnes.
    Et je récupère le nombre de colonne au moment ou je traite ma feuille!

    La variable étant formée de valeur concaténée à l'indice

    pour pouvoir faire :
    valeur1 = ThisWork...
    valeur2 = ThisWork...
    valeur3 = ThisWork...
    ...

    Et ensuite me servir dans une autre boucle sur le meme princpe
    Set noeud1 = xmlDoc.creatElement(valeur1)
    Set noeud2 = xmlDoc.creatElement(valeur2)
    Set noeud3 = xmlDoc.creatElement(valeur3)

    Car chaque colonne va correspondre à une balise que je vais remplir avec les données de la cellule correspondante... je sais pas si c'est clair !! lol

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 81
    Par défaut
    Bonjour à tous!
    Je suis content que tu poses cette question matthedemon, je me suis posé la même question il y a deux semaines et on m'a dit que j'étais tordu.
    Je suis content de ne pas être le seul à avoir un esprit tordu
    J'ai mis un code qui permet de faire ce que tu veux faire mais pour des constantes. Tu pourras peut-être l'adapter pour que ça fonctionne avec des variables!

    Le lien
    Bon courage

  6. #6
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 67
    Par défaut
    Oui moi aussi je suis tordu
    En fait l'idée la plus simple pour moi est d'utiliser un tableau que je remplit.
    Mais ce serait tellement plus simple de pour concaténer les compteur à la string pour obtenir un nombre de variables aléatoire...

    Merci à tous en tout cas!
    Je close pas mais je pense que je vais me débrouiller.

  7. #7
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 67
    Par défaut
    Bon merci tout le monde ça marche très bien avec des tableaux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ReDim valeur(nbCol) As String
    For j = 1 To nbCol
        valeur(j) = ThisWorkbook.Worksheets(myFilename).Cells(1, j).Value
    Next j
    Donc la création de variable dynamique en concatenant une string et un indice ne fonctionne pas et le plus est l'utilisation de tableau.

    Voilà j'espère que ça pourra en aider.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. VBA : nom de variable dynamique
    Par florent_projet dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/08/2008, 11h27
  2. Variable Dynamique en VBA pour Débutant
    Par hevy75 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 16/09/2007, 09h19
  3. [VBA Excel] Noms de variable dynamiques
    Par Log_polmed dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/05/2007, 11h32
  4. Récupération de variables dynamiques complexes
    Par ludoboy dans le forum ASP
    Réponses: 7
    Dernier message: 24/05/2004, 17h51
  5. [LG]Problême Variable dynamique de types différents
    Par pierrOPSG dans le forum Langage
    Réponses: 2
    Dernier message: 29/04/2004, 16h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo