rapatrier deux colonnes d'une feuille vers une autre

  • Initiateur de la discussion Initiateur de la discussion Bigdeal
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

B

Bigdeal

Guest
Bonjour,
n'ayant obtenu aucune réponse d'un autre post que j'ai déposé il y a quelque temps, je vais tenter de décomposer ma demande en plusieurs étapes, de ce fait je pourrais peut-être arriver à finaliser une macro.

je voudrais créer une macro que je puisse lancer à partir d'un fichier xls :

1- la macro doit créer une nouvelle feuille nommée "Cumul"

2- la macro doit repérer dans toutes les feuilles présentes du fichier deux colonnes dont les noms sont : "identifiant" et "Montant".

3- la macro doit recopier les deux colonnes qui sont présentes sur chacune des feuilles (et dont les noms ne sont jamais les mêmes) et les coller par ajout dans la nouvelle feuille nommée "Cumul"

4- le collage si possible doit se faire en type "coller par ajout" comme dans access.


si j'obtiens quelque chose pour ça ; ce serat déjà merveilleux pour moi
 
Bonjour,

Alors, tentons de t'avancer un peu dans tes Questions.

1. Pour créer une feuille "Cumul" en dernière position du classeur
Sheets.Add After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "Cumul"

2. tu veux repérer des colonnes dont la première ligne comporte Identifiant et Montant (pour chaque feuille sauf Cumul).
For i = 1 To Sheets.Count - 1
With Sheets(i)
ColID = .Range("1:1").Find(what:="Identifiant").Column
ColMT = .Range("1:1").Find(what:="Montant").Column
End With
Next i


3. tu veux ajouter les données trouvées dans la feuille Cumul (idem point 4.)


Ce qui donne au complet :
Sub BigDeal()
Sheets.Add After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "Cumul"
DerLig = 2
For i = 1 To Sheets.Count - 1
With Sheets(i)
ColID = .Range("1:1").Find(what:="Identifiant").Column
ColMT = .Range("1:1").Find(what:="Montant").Column
DerligID = .Cells(65536, ColID).End(xlUp).Row
.Range(.Cells(2, ColID), .Cells(DerligID, ColID)).Copy Destination:=Sheets("Cumul").Cells(DerLig, 1)
.Range(.Cells(2, ColMT), .Cells(DerligID, ColMT)).Copy Destination:=Sheets("Cumul").Cells(DerLig, 2)
End With
DerLig = DerLig + DerligID - 1
Next i
End Sub


ATTENTION, Je suis parti du principe :
1. que la feuille "Cumul" n'existe pas
2. qu'il y a des colonnes Identifiant et Montant partout
3. que ces colonnes comportent chacune au moins une valeur.


Bonne continuation.

Rai
 
Je m'empresse de répondre, ne serait-ce que pour dire un grand MERCI.

Je dois m'absenter, quel dommage que je ne puisse pas mettre à profit cette méthode.
au premier abord, ça à l'air de marcher.

Je confirme que les 3 contraintes que tu t'es fixées pour pour écrire sont les bonnes. Donc je vais mettre à profit ce code.
Je le mettrai à disposition ici même pour ceux qui sont intéressés.

Hélas je suis absent lundi et mardi mais dès mercredi je serais fixé.

A nouveau merci et à mercredi.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
598
Retour