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 :

variables pour VBA excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut variables pour VBA excel
    Bonjour,

    Dans le temps...j'utilisais notre bon vieux GWbasic pour faire des programmes....(et oui, pas tout jeune..!!!).

    Il y avait une fonction qui permettait de générer et garder en mémoire des variables, ça faisait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    10 cls
    20 dim a(10,10,10)
    30 for i=1 to 10
    40 for j=1 to 10
    50 for k=1 to 10
    60 a(i,j,k)=1
    70 nextk: next j: next i
    ça permettait de donner la valeur 1 (c'est un exemple) à a(1,1,1), a(1,1,2), etc....
    Je souhaitais savoir si on pouvait avoir la même chose en VBA. C'est clair que le for/next existe, mais je n'ai pas retrouvé mon dim a(x,x,x), ni la possibilité d'affecter un a(1,1,1),a(1,1,2),....
    Une petite aide ?

    Merci
    A+

  2. #2
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut
    Bonsoir,

    Cela n'as pas trop changé ..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Sub test()
     
    Dim a(10, 10, 10) As Integer
     For i = 1 To 10
        For j = 1 To 10
            For k = 1 To 10
                a(i, j, k) = 1
            Next
        Next
     Next
     
    End Sub
    j'ai rajouté le type : Integer (si tu le met pas les variable sont des variant)

    par défaut les tableaux prennent pour base 0 donc tu as aussi a(0,0,0) comme varaible.
    tu peu soit rajouter en haut de ton code la ligne :
    ainsi tous les tableaux de ta feuille de code débuterons à 1
    ou rajouter à la déclaration de ton tableau l'index mini :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim a(1 To 10, 1 To 10, 1 To 10) As Integer

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut
    Merci JackOuYA,

    Finalement, je vois avec plaisir que ce bon vieux GWBASIC est encore là...
    Dernière petite question :
    Toujours dans GWbasic, on avait le "PRINT" pour afficher les variables....tu vois venir ma question : comment afficher dans la colonne A (par exemple) les variables ? : A1 la valeur a(1,1,1), A2 la valeur a(1,1,2), etc....

    Merci,
    A+

  4. #4
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut
    euu je crois que si tu fais pas l'effort de lire quelques tutoriels de ce site tu vas vite te faire tirer les oreilles


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     ThisWorkbook.sheets("feuil1").range("A1")=a(1,1,1)
    Dim i as integer 
    i = 2 ' Ligne 2 ..
     ThisWorkbook.sheets("feuil1").Cells(i,1) =a(1,1,i)

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut
    JackOuYA,

    t'es un chef, c'est tout bête, c'est vrai....mais les vieux....c'est clair qu'il faut adapter le langage basic à VBA et sa structure....merci pour ton aide.

    A+
    Ericdev

    JackOuYA,
    Juste un dernier petit truc :
    je cherche à lister les différentes combinaisons, j'ai le code : mais il bloque au niveau du "If i = j Then Next". J'avais l'habitude des numéros de lignes, donc je faisais : if i=j then "renvoi à la ligne du next k", mais avec VBA, je n'ai pas de numéro de ligne, donc comment "sauter" lorsque i=j ou i=k ou j=k ???

    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
    20
    Sub test()
     
    Dim a(10, 10, 10) As Integer
    Dim q As Integer
     For i = 1 To 10
        For j = 1 To 10
            For k = 1 To 10
        Let q = q + 1
    If i = j Then Next
     
     ThisWorkbook.Sheets("feuil1").Cells(q, 1) = i
    ThisWorkbook.Sheets("feuil1").Cells(q, 2) = j
    ThisWorkbook.Sheets("feuil1").Cells(q, 3) = k
                a(i, j, k) = 1
     
            Next k
        Next j
     Next i
     
    End Sub
    Merci
    A+

  6. #6
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut


    la structure conditionnelle if c'est :
    if <condition> then

    end if
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ...
           For k = 1 To 10
                Let q = q + 1
                If Not (i = j Or i = k Or j = k) Then
                    ThisWorkbook.Sheets("feuil1").Cells(q, 1) = i
                    ThisWorkbook.Sheets("feuil1").Cells(q, 2) = j
                    ThisWorkbook.Sheets("feuil1").Cells(q, 3) = k
                    a(i, j, k) = 1
                End If
            Next...
    de plus en VBA le Let n'est pas obligatoire tu peu écrire

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut
    JackOuYA,



    Trop top, merci pour ton aide, c'est bon j'ai compris...temps d'adaptation....

    Tu as vu que je m'amusais avec des calcul de combinaisons....avec GWbasic, j'étais limité avec le dim...(nombre de variable (a(20,20,20,20,20)) ne pouvait pas fonctionner "à l'époque") mais maintenant, j'ai vu qu'avec VBA, c'est possible. Je vais pouvoir transformer mes anciens programmes...je te remercie pour ton aide et ....patience !!!

    Merci,
    à la prochaine,
    A+

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

Discussions similaires

  1. variable objet VBA excel
    Par mikeduff dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 28/11/2009, 18h00
  2. Variable Objet VBA excel
    Par blade15 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/07/2009, 10h57
  3. variables globales vba excel
    Par olodin dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 20/06/2007, 13h09
  4. [VBA-E] probleme enregistrement fichier pour VBA excel
    Par hamster. dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/04/2007, 19h52

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