Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

4 réponses
Avatar
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

4 réponses

Avatar
alainL
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
Avatar
Gloops
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
Avatar
MichD
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
Avatar
flo21000
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