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 :

Création d'un tableau simple et problème de boucles


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mai 2008
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mai 2008
    Messages : 248
    Par défaut Création d'un tableau simple et problème de boucles
    Bonjour,

    J'ai créé une liste sur une de mes pages (appelée liste) de mon classeur.
    Cette liste comprend un nom parligne (donc toutes les infos sont sur une même colonne, la première ligne étant dédié a l'entête).

    Mon but est de lier créer une variable par nom (réussi)
    d'écrire le nom de la variable sur la même ligne que le nom afin de voir si mon programme fonctionne et que tous les noms sont bien pris dans une variable.

    Voici le code:

    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
    Sub LierInfosAvecVariable()
     
        'Déclaration des variables
     
    Dim Cel As Range
    Dim Compteur As Integer
    Dim i As Integer
    Dim MesVariable(50) As String
     
        'Je prends les noms de ma première colonne et je les mets dans une variable
     
                'J'affecte Cel a ma première cellule, c'est a dire A2
                'Je sélectionne la feuille ou il y a mes infos
                'ici la feuille s'appelle "Liste"
     
    Set Cel = Worksheets("Liste").Range("A2")
     
        'Je crée ma boucle afin de prendre les infos tant
        'que la cellule n'est pas vide
     
    Do While Cel.Offset(Compteur) <> ""
    Compteur = Compteur + 1
    Loop
     
        'J'associe chaque nom de ma colonne 1 à une variable
     
    For i = 1 To Compteur
    MesVariable(i) = Cel.Offset(i)
    Range("F2" & i) = "Variable" & i   'j'écris dans la colonne F2 Variable+numéro
                                       'Etant débutant, sa me permet de voir si
                                       'tous mes noms ont bien une variable
    Next i
     
    End Sub
    Le problème... Variable + numéro est bien écrit.... mais il est écrit plusieurs ligne plus bas... La variable lié a une nom ne s'écrit donc pas sur la même ligne...

    Je n'arrive pas à voir ou mon code cloche

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 357
    Par défaut
    Bonjour,

    avec ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Range("F2" & i) = "Variable" & i   'j'écris dans la colonne F2 Variable+numéro
                                       'Etant débutant, sa me permet de voir si
                                       'tous mes noms ont bien une variable
    vous n'ecrivez pas dans F2 mais dans F21 puis F22, F23 ...

    Remplacez
    par Ca devrait aller mieux

  3. #3
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    juste une remarque je ne vois pas bien a quoi sert

    MesVariable
    Tu peux faire directement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("F" & i) = Cel.Offset(i)

    De plus cette boucle va s'arreter a la premiere ligne vide et pas a la derniere ligne renseignée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Do While Cel.Offset(Compteur) <> ""
    Compteur = Compteur + 1
    Loop
    Pour connaitre la dernière ligne renseignéeTu peux faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Compteur  = Worksheets("Liste").Cells(65536, 1).End(xlUp).Row

  4. #4
    Membre éclairé
    Inscrit en
    Juin 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 41
    Par défaut
    bonjour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    do while (test logique)
    loop
    ca fait moche ^^ et en plus c'est plus long que d'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    while(test logique)
    wend
    (et encore en plus c'est un mix du do...loop until() et du while()...wend sans pour autant etre plus efficace)

  5. #5
    Membre éclairé
    Inscrit en
    Mai 2008
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mai 2008
    Messages : 248
    Par défaut
    Bonjour,

    Merci pour vos réponses.

    @ Access Newbie: Oui sa va mieux comme sa effectivement

    @ aalex_38: J'ai modifié la partie de code pour inclure toute la colonne A. Le problème c'est que si j'ai un nom en A3, plus rien et un nom en A23, le code crée des variables vides jusque A23....

    J'ai modifié un peu du coup:

    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
    Sub LierInfosAvecVariable()
        
        'Déclaration des variables
        
    Dim Cel As Range
    Dim Compteur As Integer
    Dim i As Integer
    Dim MesVariable(50) As String
    
        'Je prends les noms de ma première colonne et je les mets dans une variable
    
                'J'affecte Cel a ma première cellule, c'est a dire A2
                'Je sélectionne la feuille ou il y a mes infos
                'ici la feuille s'appelle "Liste"
                
    Set Cel = Worksheets("Liste").Range("A2")
    
        'Nouvelle formule pour passer en revue la colonne A
    
    Compteur = Worksheets("Liste").Cells(65536, 1).End(xlUp).Row
    
        'J'associe chaque nom de ma colonne 1 à une variable
        
    For i = 2 To Compteur
        If Cel.Offset(i) <> "" Then
    MesVariable(i - 1) = Cel.Offset(i)
    Range("F" & i) = "Variable" & i - 1 'j'écris dans la colonne F2 Variable+numéro
                                        'Etant débutant, sa me permet de voir si
                                        'tous mes noms ont bien une variable
        End If
    Next i
    
    End Sub
    Le problème... sa ne marche plus!
    Je comprends pas trop... j'ai juste rajouter si cellule non vide -> instruction.

    @ garion28: Oui sa revient au même que while ... wend mais y'a plus d'expression en Do (while/until/...)... loop. Donc je préfère utiliser les expressions qui se rapprochent en syntaxe pour bien les assimiler et par la suite en utiliser d'autres (je m'enbrouille encore avec les boucles... ).

  6. #6
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Essai

  7. #7
    Membre éclairé
    Inscrit en
    Mai 2008
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mai 2008
    Messages : 248
    Par défaut
    Rajouter la propriété .value n'a rien changer

    Franchement je vois pas, je pense que sa devrait marcher tel quel en principe.

    Bon je viens de modifier un paramètre histoire de comprendre d'avantage...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    For i = 2 To Compteur
        If Cel.Offset(i) <> "" Then
    MesVariable(i - 1) = Cel.Offset(i)
    Range("F" & i) = "Variable" & i - 1 'j'écris dans la colonne F2 Variable+numéro
                                        'Etant débutant, sa me permet de voir si
                                       'tous mes noms ont bien une variable
        Else
    Range("F" & i) = "Cette case est vide"
        End If
    Next i
    End Sub
    J'ai écris en A3 un nom
    J'ai écris en A8 un nom
    Entre les deux, rien....

    Résultat si je lance la macro:
    J'ai "Cette case est vide" de A3 a A8.... donc il écrit que ma cellule est vide jusqu'a la dernière cellule occupé de la colonne A...

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

Discussions similaires

  1. [CR 2008] Création d'un tableau simple
    Par hokidoki dans le forum Débuter
    Réponses: 3
    Dernier message: 11/02/2011, 10h16
  2. Réponses: 1
    Dernier message: 21/01/2009, 17h22
  3. Problème avec \cline dans la création d'un tableau
    Par Ravens dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 5
    Dernier message: 03/12/2007, 20h31
  4. Problème de création d'un tableau
    Par fog4000 dans le forum LabVIEW
    Réponses: 7
    Dernier message: 04/06/2007, 14h53
  5. Réponses: 10
    Dernier message: 22/05/2007, 12h21

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