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 :

Macro: deplacer des tableaux excel [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 32
    Par défaut Macro: deplacer des tableaux excel
    Bonjour,

    J'ai des centaines de tableaux de largeur fixe 4 colonnes mais de longueur variable jusqu'à 10 lignes.
    Ces tableaux sont affichés l'un après l'autre dans le sens horizontal.
    je voudrais essayer de faire une macro qui puisse les afficher l'un en dessous de l'autre (sens verticale).

    Quelqu'un a t-il une piste?

    Merci d'avance !!!

  2. #2
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Salut,
    Juste pour être précis, sur la même feuille, ou une nouvelle ?
    A tu déjà des notions sur les boucles ?
    A+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 32
    Par défaut Notion
    Je prefere sur une nouvelle feuille, mais sur la meme ca me convient aussi !!!
    Oui j'ai quelques notion de boucle !!!

  4. #4
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Re,
    Voici un petit code avec la méthode Copy.
    Je n'ai pas intégrer l'ajout de feuille dans le code, je te laisse faire si nécessaire. La feuille dans laquelle on place les tableaux est appelé FeuilCible dans le code, le code fonctionnera en l'état pour autant que la feuille active soit ta feuille source, sinon précise le nom de celle-ci.
    Bonne continuation

    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
    Sub CopieTableau()
     
    Dim c As Long, DerLigne As Long, LigPaste As Long, DerCol As Long
     
    DerCol = Cells(1, Rows(1).Cells.Count).End(xlToLeft).Column 'Def la dernière colonne remplie
     
    For c = 1 To DerCol Step 4 'On ballaie toute les 4 colonnes jusquà la dernière remplie
     
        DerLigne = Cells(Columns(c).Cells.Count, c).End(xlUp).Row 'défini la dernière ligne remplie
        LigPaste = Sheets("FeuilCible").Cells(Columns(1).Cells.Count, 1).End(xlUp).Row + 1 'Défini la ligne où copier, colonne A
     
        Range(Cells(1, c), Cells(DerLigne, c + 3)).Copy Destination:=Sheets("FeuilCible").Cells(LigPaste, 1)
        Range(Cells(1, c), Cells(DerLigne, c + 3)).Clear 'si tu veux effacer le tableau source
    Next c
     
    End Sub
    Edit: Ajout d'un comment dans le code; le clear uniquement si il faut effacer les données du tableau initial.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 32
    Par défaut Testé
    J'ai testé le code,
    mais j'ai quelques problemes...
    Quand je teste avec un seul tableau, ca se passe bien !!!
    Lorsque je mets plus de 1 tableau ca bug, il me copie une partie de 2eme.

    Faut-il changer le step?

    ci joint mon fichier réduit et ce que je veux faire avec sur la feuille 2
    Fichiers attachés Fichiers attachés

  6. #6
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Re,
    Tu ne nous avais pas tout dit, ce ne sont pas des Tableaux au sens stricte.
    Mais tu as raison, c'est le step qu'il faut adapter car je n'avais pas considéré d'espace entre les tableaux.
    MAIS comme tu n'as pas un tableau au sens strict et que tu utilise un MergeCell dans la première colonne de chaque tableau la définition de ce tableau dans le code est faux.
    Il faut donc utiliser la 2ème colonne de chaque tableau pour définir la dernière ligne et la ligne où copier (j'ai également ajouté l'espace)
    N'hésites pas si tu as des questions.
    A+

    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
    Sub CopieTableau()
     
    Dim c As Long, DerLigne As Long, LigPaste As Long, DerCol As Long
     
    DerCol = Cells(2, Rows(2).Cells.Count).End(xlToLeft).Column 'Def la dernière colonne remplie sur base de la ligne 2
     
    For c = 1 To DerCol Step 5 'On ballaie toute les 5 colonnes jusquà la dernière remplie
     
        DerLigne = Cells(Columns(c + 1).Cells.Count, c + 1).End(xlUp).Row 'défini la dernière ligne remplie selon 2è col du tableau
        LigPaste = Sheets("FeuilCible").Cells(Columns(2).Cells.Count, 2).End(xlUp).Row + 2 'Défini la ligne où copier, colonne B
     
        Range(Cells(2, c), Cells(DerLigne, c + 3)).Copy Destination:=Sheets("FeuilCible").Cells(LigPaste, 1)
        'Range(Cells(1, c), Cells(DerLigne, c + 3)).Clear 'si tu veux effacer le tableau source
    Next c
     
    End Sub
    Edit: corrections de coquilles

  7. #7
    Membre expérimenté
    Inscrit en
    Août 2009
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Août 2009
    Messages : 284
    Par défaut
    Evidemment tu as une colonne vide entre tes tableaux, essaye avec step 5

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

Discussions similaires

  1. [PPT-2003] copier des tableaux excel
    Par debdev dans le forum Powerpoint
    Réponses: 5
    Dernier message: 13/10/2011, 22h58
  2. Script pour remplir des tableaux Excel.
    Par Debasorz dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 25/09/2009, 11h31
  3. [Excel] Générer des tableaux
    Par ayanami dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 07/01/2009, 15h16
  4. Gérer des tableaux Excel
    Par Antonind dans le forum MATLAB
    Réponses: 1
    Dernier message: 20/10/2008, 08h50
  5. deplacer des cellules excel
    Par johndeuf dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/11/2006, 22h46

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