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] copier plusieurs fois une colonne dans une feuille Excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 289
    Points : 163
    Points
    163
    Par défaut [VBA-Excel] copier plusieurs fois une colonne dans une feuille Excel
    Bonjour tt le monde

    j'aimerais faire un programme qui demande à l'utilisateur le nombre de fois qu'il veut copier une même colonne (par exemple la colonne a b c) dans la colonne C dans une feuille Excel.

    Pour cela, je dois créer une variable colonne qui a les valeur a b c

    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 CopierPlusieursFoisUneColonne()
    
    Dim i As interger
    Dim NUM As Integer
    Dim DernièreLigneNonVide
    
    NUM = InputBox("Combien de fois voulez-vous copier la colonne abc ?", "Titre")
    
    For i = 1 To NUM
    
    Column = a b c
    
    DernièreLigneNonVide = Range("C65535").End(xlUp).Row
    
    Cells(DernièreLigneNonVide + 1, 3).Paste (la colonne a b c)
    
    
    Next
        
    End Sub

    je n'arrive pas à trouver le bon code

    merci de m'aider - Ash

  2. #2
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par Ashley
    j'aimerais faire un programme qui demande à l'utilisateur le nombre de fois qu'il veut copier une même colonne (par exemple la colonne a b c) dans la colonne C dans une feuille Excel.
    C'est quoi, la colonne a b c???
    Je connais les colonnes a, b et c.

    Faudra essayer d'être un peu plus clair si tu veux des réponses.

  3. #3
    Membre habitué Avatar de conconbrr
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Points : 198
    Points
    198
    Par défaut
    Ouep comme te le dis alaintech, tu ne peux pas définir a b c comme nom de colonne, d'ailleurs ça ne signifie rien du tt...
    De plus a encore moins de signification

    Si tu veux définir des variables objets utilise Set
    Par exemple si tu veux donner un nom à la colonne "A", utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set rgColonne=worksheets(1).range("A:A")
    Je ne penses pas qu'il soit très malin de vouloir nommer à la base une colonne entière , donne plutôt un nom à la première cellule genre "Nom1", puis utilise

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set rgColonne=worksheets(1).range("nom1").entirecolumn
    J'espère que ça te guidera un peu

  4. #4
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 289
    Points : 163
    Points
    163
    Par défaut explications
    excusez je me suis trop mal expliqué.

    en fait, j'aimerais faire un programme qui demande à l'utilisateur le nombre de fois qu'il veut copier les éléments (des nombres entiers) 15 74 954 les un en dessous des autres dans une même colonne (par exemple la colonne C) d'une feuille Excel.

    par exemple si l'utilisateur entre 4 on aura en colonne dans la colone C :

    15
    74
    954

    15
    74
    954

    15
    74
    954


    je voudrais donc créer une variable qui prenne les éléments 15 74 et 954

    pour pouvoir faire tourner ce prog

    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
    Sub CopierPlusieursFoisUneColonne()
     
    Dim i As interger
    Dim NUM As Integer
    Dim DernièreLigneNonVide
     
    NUM = InputBox("Combien de fois voulez-vous copier la colonne abc ?", "Titre")
     
    For i = 1 To NUM
     
     
    DernièreLigneNonVide = Range("C65535").End(xlUp).Row
     
    Cells(DernièreLigneNonVide + 1, 3).Paste (??? je sais pas quoi)
     
     
    Next
     
    End Sub

  5. #5
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 289
    Points : 163
    Points
    163
    Par défaut
    oulllla encore excuse :
    une faute c pas 4 c 3

    excusez je me suis trop mal expliqué.

    en fait, j'aimerais faire un programme qui demande à l'utilisateur le nombre de fois qu'il veut copier les éléments (des nombres entiers) 15 74 954 les un en dessous des autres dans une même colonne (par exemple la colonne C) d'une feuille Excel.

    par exemple si l'utilisateur entre 3 on aura en colonne dans la colone C :

    15
    74
    954
    15
    74
    954
    15
    74
    954

    je voudrais donc créer une variable qui prenne les éléments 15 74 et 954

    pour pouvoir faire tourner ce prog

    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
    Sub CopierPlusieursFoisUneColonne()
     
    Dim i As interger
    Dim NUM As Integer
    Dim DernièreLigneNonVide
     
    NUM = InputBox("Combien de fois voulez-vous copier la colonne abc ?", "Titre")
     
    For i = 1 To NUM
     
     
    DernièreLigneNonVide = Range("C65535").End(xlUp).Row
     
    Cells(DernièreLigneNonVide + 1, 3).Paste (??? je sais pas quoi)
     
     
    Next
     
    End Sub

  6. #6
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut
    en fait, c'est un nombre de lignes que tu veux copier, non pas une colonne complète...

    dans ce cas utilise Range("<col1><lig1>:<col2><lig2>")
    choisis ta colonne sur le paramètre col1 et col2 (le même si tu n'as qu'une colonne) et choisis la plage de lig1 à lig2 pour ne prendre que les lignes voulues.

  7. #7
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 289
    Points : 163
    Points
    163
    Par défaut
    Je comprend pas

  8. #8
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut
    en gros dynamise le range pour selectionner la plage voulue.

  9. #9
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 289
    Points : 163
    Points
    163
    Par défaut
    par exemple si on veut déclarer la variable i en tant que entier on écrit :

    après on peut lui affecter une valeur, par exemple 7

    mais si on veut déclarer une variable en tant que vecteur, par exemple un vecteur prenant les valeur [15 74 954]

    comment peut on faire?

    en fait c'est ça mon vrai problème

  10. #10
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 147
    Points
    20 147
    Par défaut
    bonjour

    tu peux essayer


    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
    Sub CopierPlusieursFoisUneColonne()
        Dim i As Integer
        Dim NUM As Integer
        Dim DernièreLigneNonVide As Integer
     
        NUM = InputBox("Combien de fois voulez-vous copier ?", "Titre")
     
        For i = 1 To NUM
            DernièreLigneNonVide = Range("C65535").End(xlUp).Row
     
            Cells(DernièreLigneNonVide + 1, 3) = 15
            Cells(DernièreLigneNonVide + 2, 3) = 74
            Cells(DernièreLigneNonVide + 3, 3) = 954
        Next
    End Sub


    bon apres midi
    michel

  11. #11
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 289
    Points : 163
    Points
    163
    Par défaut
    oki c cool
    merci à tous de m'avoir aider.

    derniere question - si à la place de 15 on met 2B - sa ne marche pas : comment remédier à ce problème?

    ash.

  12. #12
    Membre habitué Avatar de conconbrr
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Points : 198
    Points
    198
    Par défaut
    Petit complèment pour répondre à une de tes interrogations, si tu veux créer un vecteur ou une matrice, tu dois en fait définir un tableau de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim tabTonTableau() as single
    Permet de déclarer le tableau ainsis que le type de données qu'il va contenir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    redim tabTonTableau(1 to max1,1 to max2,1 to ...)
    Permet de redimensionner ton tableau aux dimensions voulues (ànoter que cela réinitialise les valeurs du tableau, utilise Preserve si tu veux conserver les valeurs précédentes)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for i=ubound(tabTonTableau,1)to ubound(tabTonTableau,1)
       for j=ubound(tabTonTableau,2)to ubound(tabTonTableau,2)
           tabtontableau(i,j, ...)=...
       next j
    next i
    Rentre les valeurs dans ton tableau

    A noter que j'ai tout détaillé pour que tu vois différentes commandes s'appliquant aux tableaux (ubound,lbound...)
    Il y a d'autres manière de créer des tableaux mais celle-là est pratique

  13. #13
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 147
    Points
    20 147
    Par défaut
    rebonjour

    peux tu préciser ce que tu veux dire par

    si à la place de 15 on met 2B - sa ne marche pas

    en attendant tu peux tester

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(DernièreLigneNonVide + 1, 3) = "2B"

  14. #14
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 289
    Points : 163
    Points
    163
    Par défaut
    merci pour les complémens conconbrr

    je pense qu'il y a une erreur de syntaxe non

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for i=lbound(tabTonTableau,1)to ubound(tabTonTableau,1)
       for j=lbound(tabTonTableau,2)to ubound(tabTonTableau,2)
           tabtontableau(i,j, ...)=...
       next j
    next i

  15. #15
    Membre habitué Avatar de conconbrr
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Points : 198
    Points
    198
    Par défaut
    Effectivement désolé ... La fatigue sûrement

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 25/03/2011, 10h52
  2. Réponses: 6
    Dernier message: 19/03/2009, 10h22
  3. Récupérer le nom d'une colonne d'une table dans une variable
    Par mimi51340 dans le forum Général Java
    Réponses: 4
    Dernier message: 13/03/2008, 14h23
  4. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48
  5. Réponses: 5
    Dernier message: 24/08/2006, 15h00

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