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 :

Remplir tableau automatique


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 113
    Par défaut Remplir tableau automatique
    Bonjour,

    J'ai créé un tableau excel pour le saisie de code barre automatique. C'est à dire que lorsque je clique sur un bouton, ça me demande le premier n° à saisir puis le dernier. Ensuite ça me rempli automatiquement mon tableau. Pour exemple, voici mon 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
    Sub code()
    Dim val As Long
    Dim i, j As Integer
    i = 1
    j = 1
    val = Application.InputBox("Entrer le premier N°")
    valfin = Application.InputBox("Entrer le dernier N°")
      While j <= nbreColonne
        While i <= nbreLigne
                Cells(i, j).Value = "*" & val & "*" & Chr(10) & val
                With Cells(i, j).Characters(Start:=1, Length:=9).Font
                .Name = "CODABAR"
                .Size = 12
                End With
                With Cells(i, j).Characters(Start:=10, Length:=8).Font
                .Name = "ARIAL"
                .Size = 7
                End With
                val = val + 1
            If val <= valfin Then
            i = i + 1
            Else
            Exit Sub
            End If
        Wend
        i = 1
        j = j + 1
    Wend
    End Sub
    Ce code fonctionne super bien si on a une liste de n° consécutifs à sortir. Ce que j'aimerais faire c'est pouvoir remplir le tableau cellule après cellule avec des n° non consécutifs. Il faudrait donc que lorsque je clique sur mon bouton, je puisse inscrire mon n° et que ça l'inscrive sur la première cellule vide de mon tableau. Malheureusement ça dépasse quelque peu mes connaissances... Donc si quelqu'un aurait une idée, je suis preneur !

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Il suffit, avant de rentrer dans la boucle, que tu fixes au départ de ta macro i = dernier N° de ligne renseignés + 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    i = Range("A1").end(xlDown).row + 1
    Une question : Tu veux remplir un N° à la fois ou plusieurs N° à la suite.
    A+

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 113
    Par défaut
    Si je pouvais en saisir plusieur à la suite, ce serait encore mieux ! Mais il y a certainement plus que ça à modifier. Avec le code que j'ai actuellement, je rentre le n° de départ (par exemple : 1) et le chiffre de fin (10) et ça me rempli mon tableau de A1 à A10 (1, 2,...,10). Hors ce que j'aimerai, c'est que je puisse rentrer les n° de manière aléatoire 1, 3, 7, 15,... et que ça me remplisse (avec le même format) les cellule A1, A2, A3, A4,...

    Est-ce plus claire ?

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    C'est bien sûr possible mais là, tu vas devoir expliquer ce que tu fais, ligne par ligne car je ne suis pas certain d'avoir bien compris.
    Tu saisis tes données ligne par ligne, une colonne, puis une suivante...
    Combien de colonnes par ligne ?
    A+

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 113
    Par défaut
    Je souhaiterai cliquer sur mon bouton, inscrire un n°, que ça me le note de la format voulu (v. code plus haut) dans la cellule A1. Ensuite si je clique à nouveau sur mon bouton et que j'entre un autre n°, il faudrait que ça me l'inscrive dans la prochaine cellule vide (en l'occurence A2), etc. Bien entendu, il faut que je supprime de mon code de base le "valfin" (entre autre...). Ceci se fait colonne par colonne par colonne (30) et ligne par ligne (36).

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tu as plusieurs colonnes ou n'en as-tu qu'une seule ?

  7. #7
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 113
    Par défaut
    J'en ai plusieur ! ça va jusqu'à la ligne 36 ensuite ça passe à la 2ème colonne et ainsi de suite jusqu'à la 30ème colonne. Ceci pour autant que la quantité de chiffre demandé l'exige...

  8. #8
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 113
    Par défaut
    Je me suis repenché sur mon problème et il y a du mieux... En modifiant un peu mon code de base, j'arrive à remplir ma première colonne mais ça coince dès lors que je passe à la deuxième ! Voici mon 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
    Sub code()
    Dim val As Long
    Dim i, j As Integer
    j = 1
    i = Columns(1).Find("", Range("a65536"), , , xlByRows).Row
    val = Application.InputBox("Entrer le N°")
        While j <= nbreColonne
        While i <= nbreLigne
                Cells(i, j).Value = "*" & val & "*" & Chr(10) & val
                With Cells(i, j).Characters(Start:=1, Length:=9).Font
                .Name = "CODABAR"
                .Size = 12
                End With
                With Cells(i, j).Characters(Start:=10, Length:=8).Font
                .Name = "ARIAL"
                .Size = 7
                End With
                val = val + 1
            If val <= valfin Then
            Else
            Exit Sub
            End If
        Wend
        i = 1
        j = j + 1
    Wend
    End Sub
    Je pense que je ne suis pas loin mais je ne vois pas comment faire...

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tu dois un peu modifier la structure de ton code
    Déjà remplace cette lligne
    i = Columns(1).Find("", Range("a65536"), , , xlByRows).Row
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    i = Columns(j).Find("", Cells(65536, j), , , xlByRows).Row
    Ensuite, déplace cette même ligne et mets là ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    val = Application.InputBox("Entrer le N°")
        While j <= nbreColonne
             i = Columns(j).Find("", Cells(65536, j), , , xlByRows).Row
             While i <= nbreLigne
    Ensuite, supprime ta ligne
    i = 1
    ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
             Wend
             j = j + 1
        Wend
    Tu dis
    A+

    PS - D'où sors-tu le nbreLigne dans ton While ? Idem pour nbreColonne
    While j <= nbreColonne
    While i <= nbreLigne
    Ensuite je n'ai pas compris, tu relances ta macro pour chaque ligne ? pour chaque colonne ? pour chaque valeur de Val ?
    Enfin, n'utilise jamais un mot clé comme variable. Et Val est un mot clé.

  10. #10
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 113
    Par défaut
    Super, ça fonctionne

    Merci beaucoup !

    Pour le nombre de ligne et colonne, j'ai ça avant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Const nbreColonne As Long = 30
    Const nbreLigne As Long = 36
    Et pour répondre à ta question, oui je relance ma macro pour chaque code barre que je dois créer... Je ne vois pas d'autre alternative pour sortir des n° de code barre aléatoires. Mais si tu as une autre idée, je suis preneur...

  11. #11
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tout dépend de ta procédure créant tes codes... Juste une question : Vérifies-tu que le code qui "sort" n'existe pas déjà ?
    Pour ta question, tu pourrais mettre un appel à cette procédure dans une boucle qui englobe les deux autres, boucle dont tu sorts si ton "Input" est vide.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var = Application.InputBox("Entrer le N°")
    if var = "" then exit sub
    Juste une idée

  12. #12
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 113
    Par défaut
    Vérifies-tu que le code qui "sort" n'existe pas déjà ?
    J'avoue ne pas comprendre ta question...

    Pour ce qui est de la boucle, ça me semble être une bonne idée, je vais voir si j'arrive à faire quelque chose de ce sens !

  13. #13
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Citation Envoyé par toi
    Je ne vois pas d'autre alternative pour sortir des n° de code barre aléatoires
    si tes N° sont aléatoires, tu ne peux pas savoir ce qu'ils seront avant... et quand un nouveau N° "sortira", tu ne peux pas savoir s'il n'est pas déjà "sorti"... Et comme je ne connais pas la méthode utilisée pour les obtenir de manière aléatoire, je ne peux que supposer. Voilà !

  14. #14
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 113
    Par défaut
    Oups, je crois que je me suis mal exprimé... Quand je disais de manière aléatoire c'était par rapport à mon premier code... Dans mon premier cas, j'ai une liste de n° consécutifs (je renseigne le premier et le dernier). Dans mon deuxième cas, j'ai également une liste de n° mais qui ne se suivent pas. Ils sont cependant fixés à l'avance. Je dois par contre les rentrer un par un en activant à chaque fois ma macro (pour le moment...)

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

Discussions similaires

  1. remplir tableau avec une seule instruction !
    Par tlemcenvisit dans le forum C++
    Réponses: 3
    Dernier message: 21/06/2014, 18h22
  2. Réponses: 1
    Dernier message: 31/07/2013, 22h22
  3. Macro pour remplir un tableau automatiquement
    Par Bluesquid dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 29/05/2013, 20h07
  4. [XL-2003] Remplir un tableau automatiquement
    Par le_sayan dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/07/2011, 10h14
  5. [Tableaux] Remplir tableau avec ordre defini
    Par nicerico dans le forum Langage
    Réponses: 2
    Dernier message: 03/11/2006, 10h28

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