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

XL 2021 Transformation de données sur une ligne en plusieurs lignes

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 !

xavieralvaro

XLDnaute Nouveau
Bonjour à tous,

Je bug depuis quelques jours sur cette problématique (cf fichiers joint) j'ai des données sur une ligne, dans mon fichier : ligne 1 et 2 (mais fichiers originaux peuvent avoir jusqu'à 300 lignes de données. et je dois les dispatcher comme indiquer sur mon fichiers à partir de la ligne 8. j'ai essayer avec power query, je n'y suis pas arriver, ensuite j'ai fait une macro qui fonctionne mais qui prends en compte les numéro de ligne donc à chaque fois il repars de la ligne1 et écrase les données précédentes. Lorsque j'enregistre ma macro je déplace mes données par des couper coller je ne sais pas si s'est bien. Etant néophyte je suis preneur de vos conseils et aides ou autres solutions
je vous met ma macro ci dessous :
Sub Macro2()
'
' Macro2 Macro
'
Range("A2").Select
Application.CutCopyMode = False
Selection.AutoFill Destination:=Range("A2:A7"), Type:=xlFillDefault
Range("A2:A7").Select
Range("B2").Select
Selection.AutoFill Destination:=Range("B2:B7"), Type:=xlFillDefault
Range("B2:B7").Select
Range("C2").Select
Selection.AutoFill Destination:=Range("C2:C7"), Type:=xlFillDefault
Range("C2:C7").Select
Sheets("Macro").Select
Range("G2").Select
Selection.Copy
Range("G2").Select
Application.CutCopyMode = False
Selection.Cut
Range("G3").Select
ActiveSheet.Paste
Range("H2").Select
Selection.Cut
Range("G4").Select
ActiveSheet.Paste
Range("I2").Select
Selection.Cut
Range("E5").Select
ActiveSheet.Paste
Range("E5").Select
Selection.Copy
Range("F5").Select
ActiveSheet.Paste
Range("J2").Select
Application.CutCopyMode = False
Selection.Cut
Range("G6").Select
ActiveSheet.Paste
Range("K2").Select
Selection.Cut
Range("G7").Select
ActiveSheet.Paste
Range("L2").Select
Selection.AutoFill Destination:=Range("L2:L7"), Type:=xlFillDefault
Range("L2:L7").Select
Range("M2").Select
Selection.AutoFill Destination:=Range("M2:M7"), Type:=xlFillDefault
Range("M2:M7").Select
Range("N2").Select
Selection.AutoFill Destination:=Range("N2:N7"), Type:=xlFillDefault
Range("N2:N7").Select
End Sub

merci pour votre futur aide
 

Pièces jointes

Bonsoir Xavieralvaro, et bienvenu sur XLD,
Pour le code utilisez la balise "</>", c'est plus lisible. 🙂
En PJ un essai. La macro se lance automatiquement lorsqu'on sélectionne la feuille Destination.
J'ai supposé que sur une ligne il ne pouvait y avoir que 2 TTC Taux.
NB: J'ai updaté la PJ pour accélérer le processus. Dans cette PJ, sur mon vieux XL2007, 300 lignes sont traitées en 0.5s, ce qui me semble raisonnable.
 

Pièces jointes

Dernière édition:
Super, Merci pour votre aide. C'est exactement ça. Je vais essayer de décrypter vos macro pour comprendre ce que vous avez fait et essayer de le reproduire. A nouveau merci et bravo pour votre réactivité.
 
Bonjour à tous

Le tableau pose question : sous un titre Taux on a des euros...

On a donc l'impression de mélanger dans une colonne des choux et des carottes...
 
Dernière édition:
Re bonjour,
Je me permet de revenir vers toi car après des essais réussi sur ton fichier test j'ai voulu l'appliquer à mes données et là badaboum ça ne fonctionne plus je te mets en pièce jointe e ficheir final et peut-être pourras tu me dire ou ça cloche. Merci pour ton aide précieuse.
 

Pièces jointes

Bonjour,
et là badaboum
Bien évidemment.
La première chose faite est de compter combien de lignes on doit traiter, et je compte les N° de règles en colonne A.
Votre fichier n'a pas de N° de règles.
En PJ avec des N° de règles au pif, ... et ça marche. 🙂
NB : S'il peut ne pas y avoir de N° de règles, donnez sur quelle colonne on a une infos à chaque ligne : Date facture, Clients ...
Dans ce cas modifiez par ex pour Date Facture :
VB:
DL = .Cells(.Cells.Rows.Count, "A").End(xlUp).Row
en
DL = .Cells(.Cells.Rows.Count, "B").End(xlUp).Row
 

Pièces jointes

bonjour, axe de recherche : passer par powerquery pour splitter le contenu d'une cellule avec séparateurs en plusieurs lignes... ça, peut être un élément de solution ?
==> ICI

Celui-ci splitte en colonne mais ça peut donner des idées pour l'avoir en ligne ==> ICI
ou ICI
 
Super ! tout simplement, en plus j'avais supprimer les données de la colonne A et j'ai oublier de les remettre. Merci encore pour ton aide.
 
- 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

Discussions similaires

  • Question Question
Microsoft 365 Formules
Réponses
2
Affichages
701
Réponses
22
Affichages
3 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…