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 :

Valeur de variable nulle dans boucle For [XL-2013]


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
    Bénévol
    Inscrit en
    Septembre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Bénévol
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2014
    Messages : 2
    Par défaut Valeur de variable nulle dans boucle For
    Bonjour à tous,

    peut être n'ai je pas bien su chercher... d'habitude je fini toujours pas trouver.

    Premièrement, est-ce correct de déclarer plusieurs variables de la manière suivante :
    à la place de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim v1 As String
    Dim v2 As String
    Dim v3 As String
    Dim v4 As String


    Sinon, ma question principale est d'élucider ceci :
    Si je déclare quatre variables et que je j'affecte la valeur d'une des variables à une case, pas de problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub TEST()
    Dim v(4) As String
     
    v1 = "2312"
    v2 = ""
    v3 = "rien"
    v4 = "AZ12"
     
    Sheets(1).Range("A" & i) = v3
     
    End Sub
    Mais si je cherche à affecté chaque valeur de variable à une nouvelle cellule, excel semble ne comprend pas. Les valeurs sont nulles !

    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 v(4) As String
     
    v1 = "2312"
    v2 = ""
    v3 = "rien"
    v4 = "AZ12"
     
    For i = 1 To 4
    Sheets(1).Range("A" & i) = vi
    Next i
     
    End Sub


    De même avec des valeurs Boolean, toutes les variables sont interprétées comme False après un For !
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    Sub Pouet()
    Dim v_1 As Boolean
    Dim v_2 As Boolean
    Dim v_3 As Boolean
    Dim DerLigne As Long
    Sheets("Chronologie").Select
    DerLigne = Range("A1000").End(xlUp).Row
    Sheets("Prise contact").Select
     
    v_1 = Sheets("Prise contact").Range("B2").Value = Sheets("Prise contact").Range("B1").Value
    v_2 = Sheets("Chronologie").Range("B" & DerLigne).Value = Sheets("Prise contact").Range("B2").Value 
    v_3 = Sheets("Chronologie").Range("C" & DerLigne).Value = Sheets("Prise contact").Range("K2").Value
     
     
    If v_1 = True Then
    Sheets("Prise contact").Range("V1") = "vrai"
    Else: Sheets("Prise contact").Range("V1") = "faux"
    End If
     
    If v_2 = True Then
    Sheets("Prise contact").Range("V2") = "vrai"
    Else: Sheets("Prise contact").Range("V2") = "faux"
    End If
     
    If v_3 = True Then
    Sheets("Prise contact").Range("V3") = "vrai"
    Else: Sheets("Prise contact").Range("V3") = "faux"
    End If
     
    For i = 1 To 3
    If v_i = True Then
    Sheets("Prise contact").Range("w" & i) = "vrai" & i
    Else: Sheets("Prise contact").Range("w" & i) = "faux"
    End If
    Next i
     
    End Sub
    Cette macro donne dans mon cas :
    Faux Vrai Faux pour la colonne V
    et Faux Faux Faux pour la colonne W !

    Une idée ?

    Merci d'avance !

    FloPomPom

  2. #2
    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 176
    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 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Si tu utilises ue variable tableau, il faut l'utiliser comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub TEST()
     Dim v(4) As String, i As Long
     v(1) = "2312"
     v(2) = ""
     v(3) = "rien"
     v(4) = "AZ12"
     
     For i = 1 To 4
      Sheets(1).Range("A" & i) = v(i)
     Next i
    End Sub
    Attention que v(0) existe et est vide dans cet exemple.
    Si tu souhaites utiliser la variable de 1 à 4 il faut la déclarer comme ceci v(1 to 4) ou placer Option Base 1 en tête de module.
    Une autre façon d'assigner une valeur à une variable tableau est la fonction Array
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub TEST()
     Dim v  As Variant, i As Long
     v = Array("2312", "", "rien", "az12")
     For i = 0 To 3
      Sheets(1).Range("A" & i + 1) = v(i)
     Next i
    End Sub
    Le sujet est tellement vaste que je te conseille la lecture de ces deux tutoriels Utiliser les variables tableaux en VBA Excel et Conceptualisation des variables tableau en VBA et Application à l'optimisation du code sous Excel
    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

  3. #3
    Candidat au Club
    Homme Profil pro
    Bénévol
    Inscrit en
    Septembre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Bénévol
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2014
    Messages : 2
    Par défaut
    C'était sous mes yeux depuis le début et je n'ai rien vu !
    Merci beaucoup pour l'ensemble de ces précisions précieuses et pour les liens pour me documenter.

    A bientôt et merci encore.

    FloPomPom

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

Discussions similaires

  1. [bash] Récupérer valeur d'un argument dans boucle for
    Par lamingue dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 26/07/2012, 15h25
  2. affecter variable dans boucle FOR batch
    Par efferalgan dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 25/10/2007, 14h25
  3. [SHELL] Variable dans boucle for
    Par magicwill dans le forum Linux
    Réponses: 6
    Dernier message: 11/08/2007, 11h31
  4. [JLabel] JLabel dans boucle for
    Par clairenes dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 06/01/2006, 00h47

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