A voir également:
- PROGRAMME VBA
- Programme demarrage windows - Guide
- Mettre en veille un programme - Guide
- Message programmé iphone - Guide
- Programme word gratuit - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
11 réponses
Bonjour Jack, bonjour le forum,
Essaie comme ça :
Essaie comme ça :
Sub macro1() Dim S As Worksheet 'déclare la variable S (onglet Source) Dim O As Worksheet 'déclare la variable O (Onglets) Dim DEST As Range 'déclare la variable DEST (cellule de DESTination) Set S = Worksheets("Source") 'définit l'onglet source S S.Rows.Delete 'efface d'éventuelles anciennes données de l'onglet S For Each O In Sheets 'boucle sur tous les onglets O du claseur If O.Name <> S.Name Then 'condition : si l'onglet O n'est pas l'onglet S 'défini la cellule de destination DEST (A1 si A1 est vide, sinon la première cellule vide de la colonne A de l'onget S) Set DEST = IIf(S.Range("A1").Value = "", S.Range("A1"), S.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0)) O.Range("P1:BH1").Copy DEST 'copie la plage P1:BH1 de l'onglet O et la colle dans DEST End If 'fin de la condition Next O 'prochaien onglet de la boucle End Sub
Re,
Oui désolé. J'ai pensé que c'est ça que tu voulais. le code modifié :
je me demande pourquoi je m'emm***e à commenter les code...
Oui désolé. J'ai pensé que c'est ça que tu voulais. le code modifié :
Sub macro1() Dim S As Worksheet 'déclare la variable S (onglet Source) Dim O As Worksheet 'déclare la variable O (Onglets) Dim DEST As Range 'déclare la variable DEST (cellule de DESTination) Set S = Worksheets("Source") 'définit l'onglet source S For Each O In Sheets 'boucle sur tous les onglets O du claseur If O.Name <> S.Name Then 'condition : si l'onglet O n'est pas l'onglet S 'défini la cellule de destination DEST (A1 si A1 est vide, sinon la première cellule vide de la colonne A de l'onget S) Set DEST = IIf(S.Range("A1").Value = "", S.Range("A1"), S.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0)) O.Range("P1:BH1").Copy DEST 'copie la plage P1:BH1 de l'onglet O et la colle dans DEST End If 'fin de la condition Next O 'prochaien onglet de la boucle End Sub
je me demande pourquoi je m'emm***e à commenter les code...
Re,
Pour définir la cellule de destination j'utilise la condition suivante : si A1 est vide alors cette cellule est A1, sinon c'est la première ligne vide de la colonne A. Donc si il colle toujours en A1 c'est qu'après le "coller" A1 reste vide. Cela signifie que P1 dans l'onglet source est vide.
Mais pour éviter d'y passer des mois, il nous faudrait le fichier (voir avec par exemple http://www.cjoint.com)
Pour définir la cellule de destination j'utilise la condition suivante : si A1 est vide alors cette cellule est A1, sinon c'est la première ligne vide de la colonne A. Donc si il colle toujours en A1 c'est qu'après le "coller" A1 reste vide. Cela signifie que P1 dans l'onglet source est vide.
Mais pour éviter d'y passer des mois, il nous faudrait le fichier (voir avec par exemple http://www.cjoint.com)
Re,
Essaie comme ça :
Essaie comme ça :
Sub Macro1() Dim O As Worksheet 'déclare la variable O (Onglets) Application.DisplayAlerts = False 'n'affiche plus les message d'Excel For Each O In Sheets 'boucle sur tous les onglets O du classeur If Not O.Name = "Source" Then O.Delete 'si le nom de l'onglet n'est pas "Source", supprime l'onglet Next O 'prochain onglet de la source Application.DisplayAlerts = False 'affiche les messages d'excel End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re
il colle toute les valeurs de la plage "p1:bh1" de toute les feuille sur la premier ligne de la feuille source
...a la fin vous n'avez qu'une seul ligne! pas toutes les données!
voilà
il colle toute les valeurs de la plage "p1:bh1" de toute les feuille sur la premier ligne de la feuille source
...a la fin vous n'avez qu'une seul ligne! pas toutes les données!
voilà
merci beaucoup, ça marche très très bien
aide moi a faire une macro qui va supprimer toute les feuille sauf la feuille source! j'en ai besoin vraiment , parce que après l’actualisation j'en ai plus besoin,
merci d'avance!
aide moi a faire une macro qui va supprimer toute les feuille sauf la feuille source! j'en ai besoin vraiment , parce que après l’actualisation j'en ai plus besoin,
merci d'avance!
merci pour votre aide! ça marche
mon programme est presque terminé!
il me manque comment sélectionné toutes les feuilles d'un classeur.
svp
merci d'avance
mon programme est presque terminé!
il me manque comment sélectionné toutes les feuilles d'un classeur.
svp
merci d'avance
Re,
Essaie comme ça. Je pense qu'il y a beaucoup plus simple mais je n'y arrive pas autrement...
Essaie comme ça. Je pense qu'il y a beaucoup plus simple mais je n'y arrive pas autrement...
Sub Macro1() Dim I As Byte 'déclare la variable I (Incrément) Dim OS As Variant 'déclare la variable OS (OngletS) ReDim OS(1 To Sheets.Count) 'redimensionne le tableau OS (de 1 au nombre d'onglets dans le classeur) For I = 1 To Sheets.Count 'boucle sur tous les onglets du classeur OS(I) = Sheets(I).Name 'alimente le tableau OS avec le nom de l'onglet de la boucle Next I 'prochain onglet de la boucle Sheets(OS).Select 'sélectionne les onglets du tableau OS End Sub
merci de m avoir répondu si vite
ça ne marche pas ! la macro efface tout ce que contient la feuille source !
je ne sais pas ce qu'il faut rajouter a ma macro,pour qu'elle rajoute des donner a la derniere ligne , sinon elle marche bien