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 :

Entète comme nom de variables


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 3
    Par défaut Entète comme nom de variables
    Bonjour à tous,

    Voila quelques semaines que j'ai commencé à coder en VBA et aujourd'hui je suis confronté à un problème.

    Je vous explique:

    Je souhaiterais charger les noms de mes entètes d'une feuille comprenant des données pour les utiliser comme nom de variables.

    Exemple:

    Ma premiere colonne à pour entète "ID", la seconde "Salary" et la troisième "Bonus".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For i = 2 to LastRow
    
    For j = 1 to LastColumn
    Entete(1,j)=Sheets(DataToTake).Cells(i,j)
    Next j Net=0.6*Salary+Bonus Sheets(DataToMake).Cells(i,1)=ID Sheets(DataToMake).Cells(i,2)=Net
    Next i


    Je souhaiterais attribuer une valeur, à une variable dont le nom est l'entete de la colonne, pour utilisé ce nom dans la suite du code.

    Un grand merci d'avance à toute personne qui m'aidera.

    Corty

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Je ne comprends pas ce que tu veux; ton code boucle sur un certains nombre de lignes alors que tu ne changes que la seconde dimension de la variable tablo "Entete". Pourquoi ne pas mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim Entete1 As String, Entete2 As String, Entete3 As String
    With Sheets(DataToTake)
        Entete1 = .[A1]
        Entete2 = .[B1]
        Entete3 = .[C1]
    End With
    Mais j'ai peut-être raté quelque chose ?

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 3
    Par défaut
    Je me suis mal exprimé, désolé.

    Entête(1,j) n'est pas une variable tableaux. J'aimerais trouver une instruction à placer en lieu et place de Entête(1,j) dans le code qui me permettrait d'aller chercher la chaine de caractère se situant sur la premiere ligne de la feuille DataToTake et que ce caractère deviennent le nom de la variable.

    Cette première ligne contient en effet les entêtes, le titre de mes colonnes.

    Habituellement,je fais ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ID=Sheets(DataToTake).Cells(i,1).value
    Salary=Sheets(DataToTake).Cells(i,2).value
    Bonus=Sheets(DataToTake).Cells(i,3).value
    Mais dans le cas ou il y a beaucoup de colonnes, cela peut être rébarbatif. Or la première ligne de la feuille contient cette information, les entêtes. Dés lors je me demandais si il n'existait pas une manière de dire a excel d'attribuer la première ligne de la colonne comme nom de variable.

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    A ma connaissance, tu ne peux pas. Je te souhaite de m'être trompé.

  5. #5
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Eventuellement, tu peux obtenir un effet similaire en affectant un nom à tes cellules d’en-tête.
    Exemple :
    Le libellé de l’en-tête de la colonne A est "ID".
    J’affecte le nom "ID" à la cellule A1.
    Par la suite, je peux faire référence à cette cellule avec le nom qui lui est associé ... par exemple : Range("ID").offset(1,0)= "Toto"
    Attention toutefois aux règles de syntaxe des noms.

    Cordialement.

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Ce n'est pas à proprement parlé une variable mais tu pourrais utiliser les dictionnaires.
    Petit exemple : La feuille nommée db contient en A1, B1 & C1, les étiquettes ID, Date, Montant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Option Explicit
    Dim flagInit As Boolean
    Dim sht As Worksheet
    Dim labels
    Sub Main()
     Init
     Debug.Print "Dico : " & labels("Date")
     labels("ID") = 4
    End Sub
    Sub Init()
     Dim wkb As Workbook
     Dim c
     Set wkb = ThisWorkbook: Set sht = wkb.Worksheets("db")
     Set labels = CreateObject("Scripting.Dictionary")
     For c = 1 To sht.Range("A1").CurrentRegion.Columns.Count
      labels.Add sht.Cells(1, c).Value, c
     Next
     flagInit = True
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. [DEV] Contenu d'un NSString comme nom de variable
    Par allian dans le forum Objective-C
    Réponses: 5
    Dernier message: 20/04/2009, 08h04
  2. Réponses: 9
    Dernier message: 11/03/2009, 14h26
  3. Attribuer le nom du fichier comme nom de variable
    Par plobanalec78 dans le forum MATLAB
    Réponses: 4
    Dernier message: 24/09/2008, 17h03
  4. Réponses: 4
    Dernier message: 13/08/2006, 22h18
  5. Utiliser typename comme nom de variable
    Par Harzoglups dans le forum C++
    Réponses: 5
    Dernier message: 04/01/2006, 14h44

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