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 :

[vba excel] remplir un tableau


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 [vba excel] remplir un tableau
    Bonjour,

    j'ai un code qui me rempli automatiquement la colonne A1 à A20. Je souhaiterai que ça continue dans les colonnes B, C, D et E. Comment faire ???

    Merci de me donner un p'tit coup de pouce...

  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
    Montre ton code, qu'on n'ai pas à le ré-écrire pour le compléter

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 113
    Par défaut
    Voilà 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
     Dim i As Integer
    Dim j As Integer
    Dim iMax As Integer
    Dim iStart As Long
    Dim jMax As Integer
    Dim jStart As Long
       jMax = 17
       jStart = Val(Mid([a1], 2))
        For j = 1 To jMax
            Cells(j * 2 + 1, 1) = "a" & jStart + j & "a"
        Next j
        iMax = 18
        iStart = Val([a2])
        For i = 2 To iMax
            Cells(i * 2, 1) = iStart + i - 1
        Next i

  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
    Si je reprends ton code, que je n'ai pas tout compris (!) tu devrais pouvoir faire ça comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    NoColMax = 5
    For NoCol = 1 to NoColMax
       jMax = 17
       jStart = Val(Mid([a1], 2))
        For j = 1 To jMax
            Cells(j * 2 + 1, NoCol) = "a" & jStart + j & "a"
        Next j
        iMax = 18
        iStart = Val([a2])
        For i = 2 To iMax
            Cells(i * 2, NoCol) = iStart + i - 1
        Next i
    Next
    Sans garantie car tu continueras à utiliser la valeur de A1 dans un cas et de A2 dans l'autre
    Si tu veux utiliser A1 puis B1 puis ... E1 tu devras modifier l'adressage et mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Jstart = Val(Mid(Cells(1,NoCol),2))
    et
    istart = Val(Cells(2,NoCol))
    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 n'ai pas été très clair. En fait il s'agit d'une incrémentation et il faudrait que B1 soit la suite de A19, B2 la suite de A20, etc.

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 557
    Par défaut
    Pourrais-tu montrer à quoi devrait ressembler ton fichier à la fin?
    En visualisant le résultat, c'est toujours plus simpe de coder quelque chose

  7. #7
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 113
    Par défaut
    Voilà ce que devrait donné ma liste (en plus petit) le but et que j'entre la ou les deux premiers champs (A1 et A2) et que le reste ce complète tout seul. les données dans les code barre correspondent au chiffre d'en dessous avec un a avant et après. Exemple a4394593a dans la case A1.

    Voilà l'truc... j'espère que c'est compréhensif...
    Images attachées Images attachées  

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 557
    Par défaut
    OK je cris avoir compris
    tu veux en écrire 10 par colonne puis continuer ton incrémentation sur la colonne B, etc ...

    Je m'occupe de ton truc

    je comprends aps bien le type code barre mais je vais faire en sorte que tout se replisse bien
    àtoi après de fairearfiche les codes barres

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 557
    Par défaut
    vlà le bout de 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
     
    Const nbreColonne As Long = 5
    Const nbreLigne As Long = 20
    Const valDepart As Long = 453879
     
    Sub a()
    Dim val As Long
    Dim i, j As Integer
    i = 1
    j = 1
    val = valDepart
     
    While j <= nbreColonne
        While i <= nbreLigne
            If (i Mod 2 = 1) Then
                Cells(i, j).Value = "a" & val & "a"
            Else
                Cells(i, j).Value = val
                val = val + 1
            End If
            i = i + 1
        Wend
        i = 1
        j = j + 1
    Wend
     
    End Sub
    Je te laisse faire pour la mise en forme

    ptite explication quand même
    les constantes deinisse le nombrede ligne et de colonne sur lesquelles tu veux faire ton truc afin que tu puisses chnager facilement sans avoir à modifier le code
    Ton nombre de ligne devra forcément être pair pour avoir une alternance de code barre et de numérique

    J'ai mis une valeur par défaut du nmobre de départ que tu pêux aussi modifier

    Tu peux imaginer rajouter aussi une colonen et une ligne de départ si tu veux copléter une lsite qui existe déjà sans avoir à tout relancer

    TU initiliaserais les i et j que j'ai défins par une variables constantes qui te donnerait ton point de depart

  10. #10
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 113
    Par défaut
    Citation Envoyé par helios77
    J'ai mis une valeur par défaut du nmobre de départ que tu pêux aussi modifier
    Dans cette ordre d'idée serait-il possible de mettre comme nombre de départ celui qui se trouve dans le champ A2 (sans les "a"...). Cela supposerait que je rentre le numéro dans ce champs à la main...

    Le mieux (mais je ne sais pas comment faire) serait de créer une boîte de dialogue qui me demande le numéro de départ... Est-ce réalisable ?

  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
    Pour ça, je t'ai donné le code : Cells(NoLigne, Nocol)

  12. #12
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 557
    Par défaut
    Pour la boit de dialogue,
    tu peux utiliser InputBox

    Je te laisse regarder dans l'aide car il est assez clair pour ce genre de
    méthode
    PS : Evidemment, la constante que j'avais placé pour le nombrede départ ne pourra plus en être une, faudra alors la définir comme une Dim normal

  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
    Si c'est pour sélectionner une cellule en cours de macro, la syntaxe est celle-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim r As Range, Ladresse
      Set r = Application.InputBox("Sélection d'une cellule (pour sélectionner plusieurs cellules, maintenir la touche ctrl enfoncée)", Type:=8)
      Ladresse = r.Address
    A+

  14. #14
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 113
    Par défaut
    Voilà le code que j'ai créé (avec votre aide )
    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 code()
    Dim val As Long
    Dim i, j As Integer
    i = 1
    j = 1
    val = Application.InputBox("Entrer le premier N°")
     While j <= 7
        While i <= 36
            If (i Mod 2 = 1) Then
                Cells(i, j).Value = "a" & val & "a"
            Else
                Cells(i, j).Value = val
                val = val + 1
            End If
            i = i + 1
        Wend
        i = 1
        j = j + 1
    Wend
    End Sub
    A l'usage, je me dis que ce serait bien de pouvoir fixer une valeur de fin. Je m'explique : Actuellement je rentre le premier chiffre dans l'inputbox et ça se rempli de A1 à F36. Ce qu'il faudrait c'est remplir le tableau jusqu'à une certaine valeur. Est-ce possible ?

  15. #15
    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
    Ce qu'il faudrait c'est remplir le tableau jusqu'à une certaine valeur. Est-ce possible ?
    Qu'appelles-tu Valeur ? Un N° de ligne ? Quelle ligne, comment souhaiterais-tu que soit établie cette valeur ?
    A+

  16. #16
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 557
    Par défaut
    tu fais le meme genre d'inputbox pour demander al valeur de fin
    Dans ta boucle, quand tu trouves cette valeur, au lieu de faire i = i +1 tu fais i = 500 par exemple pour sortir de ta boucle

    Je crois qu'il y a une commande genre exit while pour sortir de al boucle mais jesuis pas sur, je m'en suis jamais servi

    Dans otn code, le nmbre de ligne (36) et de colonnes (7) sont en durs ???
    Tu devrais les remettre en constante pour le cas ou tu devrais lesmodifier un jour ou t'en resservir pour autre chose

  17. #17
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 113
    Par défaut
    En effet, petit précision.

    Actuellement le inputbox me demande le n° de départ. j'entre le n° (par exemple 100) et mon code rempli mon tableau
    a100a
    100
    a101a
    101
    ...
    ce qu'il faudrait c'est que je rentre le 100 de départ puis par exemple avec un autre inputbox 250 afin que ça me remplise le tableau dans la même idée mais uniquement de 100 à 250.

  18. #18
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 557
    Par défaut
    sans nombre de colonne et/ou ligne max ???

    Tu modifies ta boucle pourqu'elle boucle tant que la valeur final n'est pas atteinte, y a rien de compliqué

  19. #19
    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
    Ce qui t'intéresse, c'est de connaître la dernière ligne renseignée afin de partir de cette ligne vers ta nouvelle valeur ?
    Précise sans nous obliger à tout relire... 100 c'est un N° de ligne ?
    A+

  20. #20
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 113
    Par défaut
    c'est tou bon j'ai réussi ! Grace à vous

    J'ai enlever le colonne max car je n'en ai plus besoin. Par contre la ligne max oui.

    Donc maintenant je peux entrer mon chiffre de départ et de fin avec le inputbox (par exemple 100 et 250) ça me remplis mon tableau tout seul de
    a100a à 250.

    Merci à tous

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 11/08/2012, 17h49
  2. [VBA-E] - transformé un tableau excel en objet
    Par jimbololo dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 03/06/2006, 15h48
  3. [VBA-E]Remplir combobox avec contenu d'une feuille Excel
    Par Deejoh dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/03/2006, 16h16
  4. [VBA-Excel]Problème pour remplir une listview
    Par Le Djé dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/01/2006, 16h27
  5. [VBA-E]créer un tableau Excel en vba
    Par DonKnacki dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 19/01/2006, 16h06

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