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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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

+ 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