EXCEL - Séparer un listing en ligne en 7 colonnes

Le
arno62 Hors ligne
Bonjour à tous.
Tout nouveau sur le forum - après plusieurs heures de recherches, je ne trouve pas de réponse à mon problème
J'ai un listing au format Excel (xlsx) de plus de 100 contacts sous cette forme (1 seule colonne et 700 lignes : 7 lignes pour chaque contact).
1 - Nom 1
2 -Prénom 1
3 - Société 1
4 - Adresse 1
5- Téléphone 1
6- Mail 1
7- Pays 1
8 - Nom 2
9 - Prénom 2
10 - Société 2
11 - Adresse 2
12- Téléphone 2
13- Mail 2
14- Pays 2

Je souhaiterais transformer celui-ci comme suit :
A / B / C / D / E / F / G
1 Nom 1 Prénom 1 Société 1 Adresse 1 Tél. 1 Mail 1 Pays 1
2 Nom 2 Prénom 2 Société 2 Adresse 2 Tél. 2 Mail 2 Pays 2
3

J'ai bien trouvé l'astuce pour un contact avec la fonction copier / collage spécial / transposé mais ceci ne fonctionne que pour un contact. Existe-t-il une formule qui me permettrait d'obtenir automatiquement un tableau sous la forme ci-dessus, soit 100 lignes et 7 colonnes par lignes.
Merci pour votre attention.
Arno62
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
alainL
Le #23915381
Le 29/10/2011 09:46, arno62 a écrit :
Bonjour à tous.
Tout nouveau sur le forum - après plusieurs heures de recherches, je ne trouve
pas de réponse à mon problème ...
J'ai un listing au format Excel (xlsx) de plus de 100 contacts sous cette forme
(1 seule colonne et 700 lignes : 7 lignes pour chaque contact).
1 - Nom 1
2 -Prénom 1
3 - Société 1
4 - Adresse 1
5- Téléphone 1
6- Mail 1
7- Pays 1
8 - Nom 2
9 - Prénom 2
10 - Société 2
11 - Adresse 2
12- Téléphone 2
13- Mail 2
14- Pays 2
..
Je souhaiterais transformer celui-ci comme suit :
A / B / C / D / E
/ F / G
1 Nom 1 Prénom 1 Société 1 Adresse 1 Tél. 1 Mail 1
Pays 1
2 Nom 2 Prénom 2 Société 2 Adresse 2 Tél. 2 Mail 2
Pays 2
3 ...

J'ai bien trouvé l'astuce pour un contact avec la fonction copier / collage
spécial / transposé mais ceci ne fonctionne que pour un contact. Existe-t-il une
formule qui me permettrait d'obtenir automatiquement un tableau sous la forme
ci-dessus, soit 100 lignes et 7 colonnes par lignes.
Merci pour votre attention.
Arno62


J'essaierais de mettre en colonne Nom : si index (multiple de 7)+1,
copier la donnée
puis en colonne Prenom, si index=(multiple de 7)+2 copier la donnée....
etc
avec des copier vers le bas...

mais il y a sans doute plus simple :-))

--
AlainL

http://autourdalos.fr
Gloops
Le #23915581
arno62 a écrit, le 29/10/2011 09:46 :
Bonjour à tous.
Tout nouveau sur le forum - après plusieurs heures de recherches, je ne trouve
pas de réponse à mon problème ...
J'ai un listing au format Excel (xlsx) de plus de 100 contacts sous cet te forme
(1 seule colonne et 700 lignes : 7 lignes pour chaque contact).
1 - Nom 1
2 -Prénom 1
3 - Société 1
4 - Adresse 1
5- Téléphone 1
6- Mail 1
7- Pays 1
8 - Nom 2
9 - Prénom 2
10 - Société 2
11 - Adresse 2
12- Téléphone 2
13- Mail 2
14- Pays 2
..
Je souhaiterais transformer celui-ci comme suit :
A / B / C / D / E
/ F / G
1 Nom 1 Prénom 1 Société 1 Adresse 1 Tél. 1 Mail 1
Pays 1
2 Nom 2 Prénom 2 Société 2 Adresse 2 Tél. 2 Mail 2
Pays 2
3 ...

J'ai bien trouvé l'astuce pour un contact avec la fonction copier / c ollage
spécial / transposé mais ceci ne fonctionne que pour un contact. Ex iste-t-il une
formule qui me permettrait d'obtenir automatiquement un tableau sous la forme
ci-dessus, soit 100 lignes et 7 colonnes par lignes.
Merci pour votre attention.
Arno62



Bonjour,

En premier jet, je verrais bien quelque chose comme ça ...
A exécuter une fois en pas à pas pour situer les erreurs le cas éch éant.


LigneSource = 1 'ou 2 si il y a une ligne de titre
LigneCible = 1

ColonneSource = 1
ColonneCible = 1


Set FeuilSource = ActiveSheet ' par exemple
Set FeuilCible = CurrentWorkbook.Worksheets(2) 'par exemple



While Not IsEmpty(FeuilSource.Cells(LigneSource, ColonneSource)
FeuilCible.Cells(LigneCible, ColonneCible) = _
FeuilSource.Cells(LigneSource, ColonneSource)
If ColonneCible = 7 Then
ColonneCible = 1
LigneCible = LigneCible + 1
Else
ColonneCible = ColonneCible + 1
End IF
LigneSource = LigneSource + 1
Wend
MichD
Le #23915611
Bonjour,

Fais un clic droit sur l'onglet de la feuille, commande : visualiser le code
et dans la section de droite, feuille blanche, tu copies ce code.

Tu dois adapter en début de procédure le nom de l'onglet de la feuille où sont les
données. J'ai supposé que les données débutaient en A1 dans la feuille.

'---------------------------------------------------------
Sub test()
Dim DerLig As Long, T As Variant, A As Long

Application.ScreenUpdating = False
Application.EnableEvents = False
With Worksheets("Feuil1") 'Nom de l'onglet feuille à adapter
'identifier la dernière ligne
DerLig = .Range("A65536").End(xlUp).Row
'une boucle sur la plage de cellules
For A = 1 To DerLig Step 7
'par tranche de 7 lignes et 7 colonnes, on place
'le contenu dans la plage dans une
'variable tableau (array)
T = Range("A" & A).Resize(7, 7)
'On colle le contenu de la variable sur la même plage
'en transposant les lignes pour des colonnes et des
'colonnes pour les lignes
'Comme le tableau a le même nombre de lignes et de colonnes
'on peut copier les données au même endroit sinon, il faudrait
'utiliser une autre plage de cellules ou une autre feuille.
.Range("A" & A).Resize(UBound(T, 2), UBound(T, 1)) = Application.Transpose(T)
Next
End If
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
'---------------------------------------------------------



MichD
------------------------------------------
"arno62" a écrit dans le message de groupe de discussion :

Bonjour à tous.
Tout nouveau sur le forum - après plusieurs heures de recherches, je ne trouve
pas de réponse à mon problème ...
J'ai un listing au format Excel (xlsx) de plus de 100 contacts sous cette forme
(1 seule colonne et 700 lignes : 7 lignes pour chaque contact).
1 - Nom 1
2 -Prénom 1
3 - Société 1
4 - Adresse 1
5- Téléphone 1
6- Mail 1
7- Pays 1
8 - Nom 2
9 - Prénom 2
10 - Société 2
11 - Adresse 2
12- Téléphone 2
13- Mail 2
14- Pays 2
..
Je souhaiterais transformer celui-ci comme suit :
A / B / C / D / E
/ F / G
1 Nom 1 Prénom 1 Société 1 Adresse 1 Tél. 1 Mail 1
Pays 1
2 Nom 2 Prénom 2 Société 2 Adresse 2 Tél. 2 Mail 2
Pays 2
3 ...

J'ai bien trouvé l'astuce pour un contact avec la fonction copier / collage
spécial / transposé mais ceci ne fonctionne que pour un contact. Existe-t-il une
formule qui me permettrait d'obtenir automatiquement un tableau sous la forme
ci-dessus, soit 100 lignes et 7 colonnes par lignes.
Merci pour votre attention.
Arno62
flo21000 Hors ligne
Le #26395756
Le samedi 29 Octobre 2011 à 09:46 par arno62 :
Bonjour à tous.
Tout nouveau sur le forum - après plusieurs heures de recherches, je ne
trouve pas de réponse à mon problème ...
J'ai un listing au format Excel (xlsx) de plus de 100 contacts sous cette forme
(1 seule colonne et 700 lignes : 7 lignes pour chaque contact).
1 - Nom 1
2 -Prénom 1
3 - Société 1
4 - Adresse 1
5- Téléphone 1
6- Mail 1
7- Pays 1
8 - Nom 2
9 - Prénom 2
10 - Société 2
11 - Adresse 2
12- Téléphone 2
13- Mail 2
14- Pays 2
...
Je souhaiterais transformer celui-ci comme suit :
A / B / C / D / E
/ F / G
1 Nom 1 Prénom 1 Société 1 Adresse 1
Tél. 1 Mail 1 Pays 1
2 Nom 2 Prénom 2 Société 2 Adresse 2
Tél. 2 Mail 2 Pays 2
3 ...

J'ai bien trouvé l'astuce pour un contact avec la fonction copier /
collage spécial / transposé mais ceci ne fonctionne que pour un
contact. Existe-t-il une formule qui me permettrait d'obtenir automatiquement
un tableau sous la forme ci-dessus, soit 100 lignes et 7 colonnes par lignes.
Merci pour votre attention.
Arno62


Bonjour Mich D,

J'ai essayé votre macro mais dans mon cas cela ne fonctionne pas car elle s'exécute une fois sur deux.

J'aimerais comprendre pourquoi svp?

Dans mon cas, il y a un listing de 4 cellules en ligne que j'aimerais transposer en 4 colonnes.

Merci d'avance,

Flo21000
Publicité
Poster une réponse
Anonyme