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 :

Utiliser une valeur cellule dans une boucle pour déclarer (et typer) la variable du même nom


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2014
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Utiliser une valeur cellule dans une boucle pour déclarer (et typer) la variable du même nom
    Bonjour à tous,

    Nouvellement inscrit, je viens vous voir car je après maintes et maintes recherche je bloque sur un problème.
    Je souhaite utiliser la valeur d'une cellule pour déclarer (et typer) la variable du même nom à l'aide d'une boucle
    J'ai une quarantaine de variable à déclarer et typer d'après un table et dans soucis de lecture, et du fait de l'illogisme total de mon application, je ne veux pas utiliser de variable tableau.

    L'idée c'est :

    Dans mon module la variable est déjà déclarée et typée (Public IntRap as FONCTION_DATA)
    (Mon type FONCTION_DATA comprends diverses propriétés (FctCod, FctMotif,...))

    Boucler sur la colonne B (de ligne 3 à N)
    Prendre la valeur (string) de la cellule (ligne,colonne B) la première est ici "IntRap", et déclarer les variables IntRap.FctCod, IntRap.FctMotif,...


    Avec de l'imagination cela donnerait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    For LIGNE = 3 To 62
            maVar = sheets("DB").Cells(LIGNE, 2).Value 
     
    ' La une fonction de conversion un peu comme la fonction INDIRECT() d'Excel
            With indirect(maVar)
                    .Design = BASE.Cells(LIGNE, 3).Value
                    .FctCod = BASE.Cells(LIGNE, 6).Value
                    .FctMotif = BASE.Cells(LIGNE, 7).Value
            End With
    Next LIGNE
    Je veux donc faire une déclaration de variable dynamique mais pas en utilisant une variable tableau
    Si quelqu'un à une idée je suis preneur car je cherche en vain depuis pas mal de temps

    Pour plus d'infos voyez le fichier memo.xls, le problème se situe dans le module "M1_Principal" entre les ' ????????????????????
    J'ai mis pour l'instant 6 section de déclaration pour que vous voyez un peu la structure actuelle que je souhaite remplacer par une boucle unique.

    Merci d'avance à ceux qui me répondront.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    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 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Bonjour,

    A mon avis, tu ne peux pas, les variables utilisateurs doivent être déclarées à l'extérieur d'une procédure, en tête du module.

  3. #3
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2014
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Complément d'informations
    Bonjour,

    Merci d'avoir répondu si rapidement.
    En fait je me suis mal exprimé, la variable est déclarée préalablement.
    Je veux affecter une valeur à cette variable, comme il est de coutume n'importe, ou dans le code.

    J'ai trouvé une méthode qui approche de ce avec l'ajout de la référence MSscriptcontrol et la génération de code dans le code mais cela ne convient pas tout a fait.

    Je continu de chercher.

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 922
    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 : 12 922
    Points : 28 908
    Points
    28 908
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Merci d'avoir répondu si rapidement.
    En fait je me suis mal exprimé, la variable est déclarée préalablement.
    Comme Daniel, j'avais compris que tu souhaitais déclarer et typer dynamiquement une variable.
    Je veux affecter une valeur à cette variable, comme il est de coutume n'importe, ou dans le code
    Qu'entends-tu par là ?
    Je n'ai pas compris ton analogie à la fonction INDIRECT
    L'affectation de la valeur à la variable dépend de quoi ?

  5. #5
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2014
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Merci pour les réponses
    Merci Philippe, en effet la fonction indirect n'était peut être pas une analogie adéquate


    Je sais pas comment le dire pour synthétiser mais je veux que les valeurs lue dans ma source excel soit prises en tant que variable dans le code (préalablement déclarée Public et avec un typage défini)
    Le nom de la variable dépend de la valeur lue dans le tableau par la boucle.
    En colonne B (colonne2) j'ai mes noms de variable
    En F (colonne6), mon type .fctCod
    en G (colonne7), mon type .fctMotif

    Exemple:
    Je lis les cellules B3,F3,G3 dans le tableau
    La valeur de B3 est "IntRap", la valeur de F3 est "G00" et la valeur de G3 est une expression régulière "G0?0[^0-9]
    Du coup je veux déclarer dans le code que ma cellule B3 (cells(2,3)) défini une variable à l'aide de la fonction mystère (FCTMYSTERE):

    FCTMYSTERE(Sheets("DB").cells(2,3).value).fctCod = Sheets("DB").cells(6,3).value
    qui donnerais un équivalent de:
    IntRap.fctCod = Sheets("DB").cells(6,3).value

    FCTMYSTERE(Sheets("DB").cells(2,3).value).fctMotif = Sheets("DB").cells(7,3).value
    qui donnerais un équivalent de:
    IntRap.fctMotif = Sheets("DB").cells(7,3).value


    Je viens de faire une rapide connaissance avec les fonctions de table de hachage je vais voir si ca peux être plus adéquat à mon besoin.

    Merci si vous avez des idées

  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
    12 922
    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 : 12 922
    Points : 28 908
    Points
    28 908
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je vois plus clair.
    J'ai déjà travaillé avec ce type d'idée mais avec des variables tableaux mais tu as précisé que tu ne souhaitais pas les utiliser.

  7. #7
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2014
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Philippe
    Oui en effet la variable tableau si preterais bien mais je souhaite conserver un code tres lisible car il a destiné à convertir un programme machine (language ISO ou autre) composé d'une codification déja peu explicite.
    Il faudra en plus que j'effectue de nombreux calcul avec les variables déterminé afin d'effectuer un tracé sur une application de CAO donc je ne peux me permettre d'avoir une troisième couche de référencement.

    Merci pour tes réponses.

    Je vous dirais si je trouve mon bonheur a partir d'une table de hachage.

Discussions similaires

  1. Réponses: 5
    Dernier message: 20/05/2015, 09h35
  2. Réponses: 6
    Dernier message: 17/10/2012, 13h27
  3. Réponses: 8
    Dernier message: 05/04/2011, 08h06
  4. Réponses: 82
    Dernier message: 05/02/2011, 14h34
  5. Réponses: 1
    Dernier message: 11/06/2008, 13h33

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