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 - Concatener variables ? [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juillet 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2015
    Messages : 10
    Par défaut VBA - Concatener variables ?
    Bonjour,
    Je suis face à un souci sur un code (plus de l'économie qu'un souci d’ailleurs). Je souhaite tester si le résultat d'une cellule est égal à une de mes 12 variables déclarées.
    Pour éviter de me saisir 12 "If" (un par variable), je pensais passer par un "for". "For" de 1 à 12 (1 à 12 étant le suffixe de mes 12 variables....suis-je clair ?).
    Je vous met des parties concernées du code :


    j'ai préalablement déclaré mes variables en testant string, long...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Dim ALI1 As String, ALI2 As String, ALI3 As String, ALI4 As String, ALI5 As String, ALI6 As String
    Dim ALI7 As String, ALI8 As String, ALI9 As String, ALI10 As String, ALI11 As String, ALI12 As String
    Dim QTALI1 As Long, QTALI2 As Long, QTALI3 As Long, QTALI4 As Long, QTALI5 As Long, QTALI6 As Long
    Dim QTALI7 As Long, QTALI8 As Long, QTALI9 As Long, QTALI10 As Long, QTALI11 As Long, QTALI12 As Long
    Dim MTALI1 As Long, MTALI2 As Long, MTALI3 As Long, MTALI4 As Long, MTALI5 As Long, MTALI6 As Long
    Dim MTALI7 As Long, MTALI8 As Long, MTALI9 As Long, MTALI10 As Long, MTALI11 As Long, MTALI12 As Long
    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
     
                    For Liv = 3 To LivLigne
                    Range("C" & Liv).Select
     
                        For Var = 1 To 12
                            If ActiveCell.Value = (ALI & Var) Then 'si cellule en cours = ALI1 / je teste si ma cellule = une des variables
                           'QTALI & Var = Range("G" & Liv).Value 'Alors QTALI1 = ... / Si = à une des variable alors je stocke le résultat pour QT
                           'MTALI & Var = Range("G" & Liv).Value 'MTALI1=... / Si = à une des variable alors je stocke le résultat pour MT
                            End If
                        Next Var
                    Next Liv
     
                 For Q = 1 To 12 'Utilisé pour faire une somme en cumulé croissant
                    QT = QT + QTALI & Q
                    Cout = Cout + MTALI & Q
                Next Q
    Je pense qu'il doit y avoir plus simple pour faire cela mais je ne vois pas comment l'articuler.

    je vous remercie par avance pour vos réponses.

    Killian

  2. #2
    Membre Expert Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 671
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 671
    Par défaut VBA - Concatener variables ?
    Votre code a l'air correct! quelle économie espérez-vous ? en principe, ça dure une fraction de seconde si le PC est assez puissant !
    Je suppose que vos variables QT et "cout" sont initialisées à zéro avant démarrage.

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    VBA ne gère pas de macro-variable.
    Il ne faut pas déclarer les variables comme tu le fais mais faire des variables indicées.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim ALI(12) As String
    Dim QTALI(12) As Long
    Dim MTALI(12) As Long
    Et ensuite les utiliser comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                            If ActiveCell.Value = ALI(Var) Then
    Je n'ai pas regardé le reste du code.

    Citation Envoyé par Zekraoui_Jakani Voir le message
    Votre code a l'air correct!

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut


    Variable indicée = variable tableau

    Sinon il peut avoir l'air (le code) …

  5. #5
    Membre habitué
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juillet 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2015
    Messages : 10
    Par défaut
    Menhir :
    C'est ce qu'il me fallait! Des variables indicées (appelées aussi liste dans certains cas ).
    J'ai testé et cela fonctionne parfaitement. Ce sera donc une économie d'écriture de code conséquente et plus de clarté dans le code.
    Je m'étais bien penché une ou deux fois sur les variables tableaux mais je n'avais pas compris le concept (dans le cas que j'utilise, là je le comprend ! ).
    J'étais donc bien sur le bon forum!

    Merci pour la rapidité ! Vous êtes géniaux!

    Si je peux me permettre et sans agressivité aucune : Il existe des utilisateurs chevronnés et qui bénéficient de l'expérience. D'autres découvrent c'est le jeu! Internet nous permet de mettre en place des forums d'entraide. Il serait bien de permettre aux "novices" d'avoir un peu plus de confiance en eux en évitant un rabrouage systématique du type : google est ton ami, pas le bon forum, consultes les bases,utilises la recherche,...
    Comment trouver ce que l'on cherche si l'on ne sait pas que ça existe ?

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Wormboy74 Voir le message
    J'étais donc bien sur le bon forum!
    Non non, Marc a raison : les questions concernant le VBA doivent se placer dans la rubrique Macros et VBA Excel.

    Il serait bien de permettre aux "novices" d'avoir un peu plus de confiance en eux en évitant un rabrouage systématique du type : google est ton ami, pas le bon forum, consultes les bases,utilises la recherche,...
    Comment trouver ce que l'on cherche si l'on ne sait pas que ça existe ?
    Même en étant novice, on peut comprendre que s'il y a une rubrique Macros et VBA Excel, c'est là qu'il faut placer les question relatives au VBA, non ?

  7. #7
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour !

    Citation Envoyé par Wormboy74 Voir le message
    Je pense qu'il doit y avoir plus simple pour faire cela mais je ne vois pas comment l'articuler.
    Oui il y a plus simple mais comme ici ce n'est pas le bon forum
    je conseillerais donc d'utiliser le B-A-BA d'Excel comme la fonction de feuille de calculs EQUIV, boucle inutile !

    Sinon via deux des nombreux tutoriels à disposition :

    Utiliser les variables en VBA Excel

    Utiliser les variables tableaux en VBA Excel

    _________________________________________________________________________________________________________
    Je suis Paris, Charlie, Bruxelles, …

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

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