Manip pour copier en colonne des valeurs qui sont en lignes

IManai

XLDnaute Nouveau
Bonjour,

J'ai besoin d'aide pour une manipulation sur un dossier de base-client d'environ 13 000 clients.

Je voudrais savoir comment transposer en colonne les infos de chaque client (adresse, code postal, tel) qui sont en ligne (le dossier s'étend sur + de 100 000 lignes), sachant qu'il n'y pas de rythme entre chaque client.
Y a-t-il une manip simple et rapide qui m'éviterais de copier ces infos pour un client à la fois ?

J'espère avoir été clair.

Merci d'avance !
 

IManai

XLDnaute Nouveau
Re : Manip pour copier en colonne des valeurs qui sont en lignes

Bonjour IManai,

Pourrais-tu exposer un fichier exemple que tu crées de toute pièce pour pouvoir t'aider ?

Voila, et ça continue comme ça sur 100 000 lignes pour les 13 000 clients.
En fait je voudrais pour chaque client afficher une colonne pour le code postal, une pour l'adresse, une pour le tél, etc..
 

Pièces jointes

  • Classeur1.xlsx
    8.5 KB · Affichages: 30
  • Classeur1.xlsx
    8.5 KB · Affichages: 31

Shakki

XLDnaute Occasionnel
Re : Manip pour copier en colonne des valeurs qui sont en lignes

Bonjour,

Un essai en pièce jointe.
Pour afficher la macro, faire Alt + F11.
Et pour l'activer, faire F5
 

Pièces jointes

  • IManai.xlsm
    15.7 KB · Affichages: 35
  • IManai.xlsm
    15.7 KB · Affichages: 24

IManai

XLDnaute Nouveau
Re : Manip pour copier en colonne des valeurs qui sont en lignes

Salut Shakki

Merci pour ta réponse !
En fait chez moi j'ai le excel 2013 et tes manip de marche pas du coup je ne vois pas ce que tu as essayé de faire sur mon fichier.
Je réessaierais lundi au bureau avec le excel 2010 pour voir si ça fait quelque chose.

Merci encore !
 

Shakki

XLDnaute Occasionnel
Re : Manip pour copier en colonne des valeurs qui sont en lignes

Bizarre que ça ne fonctionne pas avec excel 2013...

Peux-tu réessayer avec ce nouveau fichier ? Appuie juste sur le bouton Go.
Il faut bien sûr activer les macros pour que ça fonctionne.
 

Pièces jointes

  • IManai.xlsm
    38 KB · Affichages: 25
  • IManai.xlsm
    38 KB · Affichages: 23

Paf

XLDnaute Barbatruc
Re : Manip pour copier en colonne des valeurs qui sont en lignes

Bonjour IManai, Shakki

un essai macro utilisant les tableaux( array) pour tenter d'optimiser le temps de traitement

Code:
Sub MacroTrans()
 Dim Tablo, Tabfin(), i As Long, j As Long, x As Long
 With Worksheets("Feuil1")
 Tablo = .Range("A1:A" & .Range("A" & Rows.Count).End(xlUp).Row)
 For i = LBound(Tablo) To UBound(Tablo) Step 9
    x = x + 1
    ReDim Preserve Tabfin(0 To 7, 1 To x)
    For j = 0 To 7
        Tabfin(j, x) = Tablo(i + j, 1)
    Next
 Next
 .Range("B1").Resize(UBound(Tabfin, 2), UBound(Tabfin, 1)) = Application.Transpose(Tabfin)
 End With
End Sub

A+

Edit: Flûte, tout faux !! Je n'avais pas fait attention à:
sachant qu'il n'y pas de rythme entre chaque client.
et dans la macro je me suis basé sur l'exemple où l'on a un client toutes les 9 lignes
 
Dernière édition:

IManai

XLDnaute Nouveau
Re : Manip pour copier en colonne des valeurs qui sont en lignes

Oh oui ça marche !
Quelle est la manip à faire ? Car dans mon fichier (qui est à mon bureau), il y a plus de 13 000 clients, tous différents ...

Merci beaucoup en tout cas :)
 

Shakki

XLDnaute Occasionnel
Re : Manip pour copier en colonne des valeurs qui sont en lignes

Bonjour,

Une fois que tu as ouvert ton fichier et sélectionné l'onglet avec tes clients, tu appuies sur Alt + F11. La fenêtre macro s'ouvre.
Dans la barre de menu VBA, tu fais Insertion / module et tu copies-colles le code de Paf ou le mien ci-dessous:

Code:
Sub Clients()

Application.ScreenUpdating = False

Range("C1:Z" & Range("C" & Rows.Count).End(xlUp).Row).ClearContents
Entete = Array(, "Client", "CP", "Adresse", "Tel", "Fax", "Cabinet", "CP", "Adresse Cabinet")
For a = 1 To 8
  Cells(1, a + 2) = Entete(a)
Next

Set MaDest = Range("C2")

For Each X In Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row)
    If X.Value = "" Then
        Set MaDest = Range("C" & Rows.Count).End(xlUp).Offset(1, 0)
        j = 0
    Else
        MaDest.Offset(0, j).Value = X.Value
        j = j + 1
    End If
Next

MaDest.Cells.EntireColumn.AutoFit

Application.ScreenUpdating = True
End Sub

Ensuite ne reste plus qu'à exécuter la macro. Pour ça, appuie sur F5 ou clique sur le triangle vert dans la barre de menu VBA.

Note que si ton fichier est en xlsx, le code sera supprimé quand tu enregistreras. Si tu souhaites conserver ce code, il faudra enregistrer ton fichier en xlsm.

Bonne fin de weekend
 

IManai

XLDnaute Nouveau
Re : Manip pour copier en colonne des valeurs qui sont en lignes

Bonjour,

Une fois que tu as ouvert ton fichier et sélectionné l'onglet avec tes clients, tu appuies sur Alt + F11. La fenêtre macro s'ouvre.
Dans la barre de menu VBA, tu fais Insertion / module et tu copies-colles le code de Paf ou le mien ci-dessous:

Code:
Sub Clients()

Application.ScreenUpdating = False

Range("C1:Z" & Range("C" & Rows.Count).End(xlUp).Row).ClearContents
Entete = Array(, "Client", "CP", "Adresse", "Tel", "Fax", "Cabinet", "CP", "Adresse Cabinet")
For a = 1 To 8
  Cells(1, a + 2) = Entete(a)
Next

Set MaDest = Range("C2")

For Each X In Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row)
    If X.Value = "" Then
        Set MaDest = Range("C" & Rows.Count).End(xlUp).Offset(1, 0)
        j = 0
    Else
        MaDest.Offset(0, j).Value = X.Value
        j = j + 1
    End If
Next

MaDest.Cells.EntireColumn.AutoFit

Application.ScreenUpdating = True
End Sub

Ensuite ne reste plus qu'à exécuter la macro. Pour ça, appuie sur F5 ou clique sur le triangle vert dans la barre de menu VBA.

Note que si ton fichier est en xlsx, le code sera supprimé quand tu enregistreras. Si tu souhaites conserver ce code, il faudra enregistrer ton fichier en xlsm.

Bonne fin de weekend

En effet ça marche !
Merci beaucoup Shakki, tu m'as fait gagner plusieurs heures de copier/coller !

Très bonne journée à toi
 

Discussions similaires

Statistiques des forums

Discussions
314 208
Messages
2 107 290
Membres
109 796
dernier inscrit
aelgar