Décalage de 9 colonnes en lignes

  • Initiateur de la discussion Initiateur de la discussion fredodenantes
  • 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 !

F

fredodenantes

Guest
Bonjour à tous,

Bon le titre n'est pas très parlant, voila j'ai un fichier exel avec 2 feuilles la première est une base de donnée et le deuxième la recopie de cette base de donnée dans un autre format (voir le fichier ci-joint)

Dans ma première feuille j'ai 9 colonnes avec 3 fois la même chose (symbol , type et comment) et je souhaite copier automatiquement dans une autre feuille avec le format suivant
3 premières colonnes de la première ligne du database vers la première ligne de l'autre feuille
3 colonnes suivantes de la première ligne de la database vers la deuxième ligne de l'autre feuille
3 dernières colonnes de la première ligne de la database vers la troisième ligne

et on répète l'opération plus de 1000fois

Franchement j'ai vraiment besoin d'un coup de main car la je sèche.

Merci d'avance.
 

Pièces jointes

Re : Décalage de 9 colonnes en lignes

Bonjour et soit le bienvenu sur le forum,

C'est faisable par formule, mais assez lourd (9000 formules), donc lent !
Mieux vaut attendre une proposition par macro.

Si tu n'obtiens pas de réponse dans les heures qui suivent, ce qui m'étonnera fort, je te proposerai la formule.

abcd

Edition :
Salut James et pierejean.
Sous mon message il y a lieu de remplacer "heures" par "minutes" (lol).
 
Dernière édition:
Re : Décalage de 9 colonnes en lignes

Bonjour et soit le bienvenu sur le forum,

C'est faisable par formule, mais assez lourd (9000 formules), donc lent !
Mieux vaut attendre une proposition par macro.

Si tu n'obtiens pas de réponse dans les heures qui suivent, ce qui m'étonnera fort, je te proposerai la formule.

abcd

Edition :
Salut James et pierejean.
Sous mon message il y a lieu de remplacer "heures" par "minutes" (lol).

Salut abcd,

Entre deux trucs, je viens rapidement de tester les formules ...pour voir le temps que cela prendrait ... (en supposant une base constituée de 3 colonnes) :
Avec 9000 copies de formule sur 60'000 lignes ... je viens de tester 2 secondes ... acceptable ...
à moins qu'il faille ouvrir 1000 fichiers de 60'000 lignes ... Je me demande parfois jusqu'où doivent aller les utilisateurs ...dans le dos de leurs "informaticiens" ... 🙂

A +
 
Re : Décalage de 9 colonnes en lignes

Bon je viens de tester la macro maais elle ne fonctionne pas avec mon fichier réel. La copie réaliser avec la macro s'effectue sur du texte mais dans mon fichier c'est des formules et du coup il me fait des erreurs que quoi il manque les références.

mais dans un premier temps je voudrai comprendre la macro est que vous pouvez me la commenter

Sub report()
Sheets("Recopie en colonne").Range("A2:C65536").ClearContents
Application.ScreenUpdating = False
ligne = 2
With Sheets("database 1")
For n = 2 To Sheets("database 1").Range("A65536").End(xlUp).Row
For m = 1 To 7 Step 3
.Range(Cells(n, m).Address & ":" & Cells(n, m + 2).Address).Copy Destination:=Sheets("Recopie en colonne").Cells(ligne, 1)
ligne = ligne + 1
Next m
Next n
End With
Application.ScreenUpdating = True
End Sub


Merci d'avance.
 
Re : Décalage de 9 colonnes en lignes

Re

Voici le commentaire

Code:
Sub report()
'effacement d'eventuels resultats precedents
Sheets("Recopie en colonne").Range("A2:C65536").ClearContents
'pour eviter le rafraichissement de l'ecran
Application.ScreenUpdating = False
'initialisation de la 1ere ligne ou copier
ligne = 2
'avec la feuille database 1
With Sheets("database 1")
'balayage de la colonne A
For n = 2 To Sheets("database 1").Range("A65536").End(xlUp).Row
'm est le numero de la colonne de la region a copier (sera 1 puis 4 puis 7)
  For m = 1 To 7 Step 3
'copie de la zone database 1 vers Recopie...
    .Range(Cells(n, m).Address & ":" & Cells(n, m + 2).Address).Copy Destination:=Sheets("Recopie en colonne").Cells(ligne, 1)
'prochaine ligne de Recopie ....a servir
    ligne = ligne + 1
  Next m
Next n
End With
'pour recuperer le rafraichissement d'ecran
Application.ScreenUpdating = True
End Sub

Peux-tu donner un exemple de ton fichier reel (sans données confidentielles)
 
Re : Décalage de 9 colonnes en lignes

Re

Voila la macro adaptée a ton fichier

Code:
Sub report()
'effacement d'eventuels resultats precedents
Sheets("Variable MFZ2").Range("A2:D65536").ClearContents
'pour eviter le rafraichissement de l'ecran
Application.ScreenUpdating = False
'initialisation de la 1ere ligne ou copier
ligne = 2
'avec la feeullie database 1
With Sheets("débour MFZ2")
'balayage de la colonne
For n = 10 To .Range("Q65536").End(xlUp).Row
'm est le numero de la colonne de la region a copier (sera 17 puis 24 puis 25)
  For m = 17 To 25 Step 4
'copie de la zone database 1 vers Recopie...
    .Range(Cells(n, m).Address & ":" & Cells(n, m + 3).Address).Copy Destination:=Sheets("Variable MFZ2").Cells(ligne, 1)
'prochaine ligne de Recopie ....a servir
    ligne = ligne + 1
  Next m
Next n
End With
'pour recuperer le rafraichissement d'ecran
Application.ScreenUpdating = True
End Sub
 
Re : Décalage de 9 colonnes en lignes

Bonsoir,

Merci beaucoup la fonction très bien, j'ai modifier juste une chose car cette macro copie la cellule donc la fonction contenu par la cellule alors que moi je souhaite avoir que la valeur de la cellule, du coup j'ai fais une autre macro pour copie les valeurs et je décale les colonnes à copier.

merci
 
- 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
10
Affichages
582
Retour