Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 créer une boucle sur plusieurs feuilles et copier coller

gbesse

XLDnaute Nouveau
Bonjour à toutes et tous.

Tout d'abord, milles excuses si ma question n'est pas claire, je viens d'arriver dans le forum et les macros.

J'ai un fichier avec plusieurs feuilles :
1 feuille "Q1" est le résumé du plan d'action des différentes semaines.
plusieurs feuilles de "W1" a "W14" qui correspondent au plans d'actions de chacune des semaines.

J'ai fait une macro me permettant de copier toutes les cellules des feuilles "W1" a "W14" et les copier a la suite dans la feuille "Q1".

j'ai deux problèmes :
1- ma macro bug car trop longue (je pense)
2- elle copie une cellule au dessus de la plage que je lui demande si ma premiere cellule est vide.

J'espère que quelqu'un peut m'aider car je m'arrache les cheveux.

Merci par avance
Guillaume.
voici le code

Sub colW1()

'Vider les données de Q1’
Sheets("Q1").Select 'selection de la feuille Q1’
Range("B6:J" & Range("B65000").End(xlUp).Row).Select 'selection cellule non vide sur la plage’
Selection.Clear 'effacer la selection’

Sheets("W1").Select 'selection de la feuille W1 ’
Range("B6:J" & Range("B65000").End(xlUp).Row).Select 'selection cellule non vide sur la plage’
Selection.Copy
Sheets("Q1").Select 'selection de la feuille Q1 ’
Range("B6").Select
ActiveSheet.Paste

'Copier ce qu’il y a sur la feuille W2 sur Q1’
Sheets("W2").Select 'selection de la feuille W2 ’
Range("B6:J" & Range("B65000").End(xlUp).Row).Select 'selection cellule non vide sur la plage’
Selection.Copy
Sheets("Q1").Select 'selection de la feuille Q1 ’
Range("B6").End(xlDown).Offset(1, 0).Select 'selection de la premiere cellule vide’
ActiveSheet.Paste

ainsi de suite jusqu'a W14
 

vgendron

XLDnaute Barbatruc
Re : créer une boucle sur plusieurs feuilles et copier coller

Hello

sans voir de fichier exemple.. difficile d'etre sur que ca va correspondre à ton besoin.

Code:
Sub rassemble()

If Sheets("Q1").Range("B6") <> "" Then
    Range("B6:J" & Range("B65000").End(xlUp).Row).Clear
End If

For i = 1 To 14
    With Sheets("W" & i)
        .Range("B6:J" & .Range("B65000").End(xlUp).Row).Copy Destination:=Sheets("Q1").Range("B65000").End(xlUp).Offset(1, 0)
    End With
Next i

End Sub

ca suppose qu'en ligne B5 de ta feuill Q1, tu as quelque chose comme un intitulé.;

ne teste pas si la feuille Wi existe ou pas
à voir par la suite
 

gbesse

XLDnaute Nouveau
Re : créer une boucle sur plusieurs feuilles et copier coller

Bonjour vgendron,
Ca marche parfaitement sauf que lorsque mes cellules sont vides en B6, ca me colle mes cellules de l'intitulé de B5.
je n'arrive pas a comprendre pourquoi.
Aurais tu une idée?

Merci par avance.

Guillaume
 

gbesse

XLDnaute Nouveau
Re : créer une boucle sur plusieurs feuilles et copier coller

Bonjour vgendron,

et encore merci.
Voici le fichier, je n'arrive pas a comprendre ce qui se passe.
peut on ajouter dans la macro au moment de with.sheet une condition : si B6 vide, on colle si non vide, on passe a la sheet suivante?
Merci pour ton aide précieuse.
Guillaume
 

Pièces jointes

  • Sales1 PAP Q12016 essai3.zip
    103.7 KB · Affichages: 50

vgendron

XLDnaute Barbatruc
Re : créer une boucle sur plusieurs feuilles et copier coller

Hello

il manque juste un test de cellule B6 vide

Code:
Sub rassemble()

'une ligne 6 vide dans Q1 suppose qu'il n'y a rien à effacer..
If Sheets("Q1").Range("B6") <> "" Then
    Range("B6:J" & Range("B65000").End(xlUp).Row).Clear
End If

For i = 1 To 14
    With Sheets("W" & i)
        'une cellule B6 vide dans Wi suppose qu'il n'y a rien à copier..
        If .Range("B6") <> "" Then
            .Range("B6:J" & .Range("B65000").End(xlUp).Row).Copy Destination:=Sheets("Q1").Range("B65000").End(xlUp).Offset(1, 0)
        End If
    End With
Next i
End Sub

Pour expliquer. le problème vient de cette ligne
Code:
 .Range("B6:J" & .Range("B65000").End(xlUp).Row).Copy Destination:=Sheets("Q1").Range("B65000").End(xlUp).Offset(1, 0)

et surtout cette partie
Code:
.Range("B6:J" & .Range("B65000").End(xlUp).Row)

en cas de ligne vide en B6, le range("B65000").end(xlup).row remonte à la ligne 5
et du coup, ca copie la range B6:J5 qui contient ton entete.
 
Dernière édition:

gbesse

XLDnaute Nouveau
Re : créer une boucle sur plusieurs feuilles et copier coller

Mille mercis vgendron, non seulement pour ton aide mais également pour tes explications.
Tout marche parfaitement et j'ai compris le principe.
Merci aussi a Excel-downloads pour les tutos.
Guillaume
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…