Adresse en colonne versus en lign - Besoin d'aide merci beaucoup

Résolu/Fermé
MaxwellCosta Messages postés 17 Date d'inscription vendredi 12 décembre 2014 Statut Membre Dernière intervention 20 juin 2019 - 7 mai 2015 à 12:00
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 10 mai 2015 à 11:56
Bonjour à tous,

Bonjour à tous,

J'ai un petit soucis j'ai 6000 adresses à traiter

J'ai en colonne A des bloc d'adresses à la suite séparé par une ligne blanche

ROMAIN ACKER
s/c SEECA INTERNATIONAL
43 RUE DU ROCHER
75008 PARIS
Tel. 01 71 18 11 12
Fax. 01 71 18 11 15

GAUTHIER ACKET
s/c KPMG SA
1 COURS VALMY
92923 PARIS LA DEFENSE CEDEX
Tel. 01 55 68 60 64
Fax. 01 55 68 77 94

CLAUDE ADDA
4 CITE NOLLEZ
75018 PARIS
Tel. 01 46 06 07 06
Fax. 01 42 23 52 99

Je dois les mettre en ligne à partir de la cellule D30 sous cette forme
ROMAIN ACKER 43 RUE DU ROCHER 75008 PARIS Tel. 01 71 18 11 12 Fax. 01 71 18 11 15
GAUTHIER ACKET 1 COURS VALMY 92923 PARIS LA DEFENSE CEDEX Tel. 01 55 68 60 64 Fax. 01 55 68 77 94

J'ai essayé avec la soution "transposer" mais ça ne fonctionne pas

Est ce que quelqu'un aurait une solution automatisé car faire cela à la main c'est un peu long.

Merci beaucoup pour votre aide à tous
A voir également:

17 réponses

via55 Messages postés 14502 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 9 décembre 2024 2 736
7 mai 2015 à 13:46
Bonjour

Avec une macro :
Sub transposer()
Dim Ligne As Long
' derniere ligne remplie en colonne 1 de la 1ere feuille
Ligne = Sheets(1).Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row
x = 1 'ligne de départ de recopie sur feuille 2 (à modifier si nécessaire)
y = 0
' boucle sur les lignes de la 1ere feuille
For n = 1 To Ligne
' si vide on incrémente la variable ligne de 1 et on remet la variable colonne à 0
If Sheets(1).Cells(n, 1) = "" Then
x = x + 1: y = 0
' sinon on incrémente la variable colonne de 1 et on copie en 2eme feuille
Else: y = y + 1: Sheets(2).Cells(x, y) = Sheets(1).Cells(n, 1)
End If
Next
End Sub


ALT+F pour ouvrir l'éditeur VBA puis Insertion puis Module et copier-coller la macro avant de fermer l'éditeur

Pour lancer la macro Onglet Developpeur Macros, selectionner la macro transposer et Executer

Cdlmnt
Via
0
MaxwellCosta Messages postés 17 Date d'inscription vendredi 12 décembre 2014 Statut Membre Dernière intervention 20 juin 2019
7 mai 2015 à 21:49
Bonsoir et merci pour ta réponse
J'ai mis en place la Macro et quand je la démarre
En fait ça me met une erreur d'execution (9) et si je clique sur debogage ça me surligne
1: Sheets(2).Cells(x, y) = Sheets(1).Cells(n, 1)

Que dois je faire ?

Merci beaucoup
0
via55 Messages postés 14502 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 9 décembre 2024 2 736
7 mai 2015 à 22:28
Erreur 9 c'est qu'un indice n'appartient pas à la sélection
les x, y et n de devraient pas poser de problème, je ne vois que sheets(2) qui pourrait causer une erreur si tu n'as qu'une feuille dans ton classeur (en ce cas créer une seconde feuille avant de lancer la macro)
Sinon postes un exemple (allégé, quelques lignes suffiront, et anonymé si necessaire) sur cjoint.com et reviens ici indiquer le lien fourni ; je regarderai ce qui peut clocher dans ton fichier

Cdlmnt
Via
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié par michel_m le 8/05/2015 à 08:34
Bonjour à tous les 2
pour tenter d'^tre efficace surtout avec quelques 30000 lignes qui demandent l'emploi de techniques spécifiques

Mettre un extrait du classeur environ 50 adresses (et non un exemple)sans données confidentielles en pièce jointe sur https://www.cjoint.com/
et coller le lien proposé dans le message de réponse
Dans l'attente

Au besoin de confidentialité, mets des pseudos style Toto1 Toto2 à la place des noms...

Michel
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
MaxwellCosta Messages postés 17 Date d'inscription vendredi 12 décembre 2014 Statut Membre Dernière intervention 20 juin 2019
8 mai 2015 à 10:24
Bonjour et merci pour vos réponse

Comme vous me l'avez demandé, j'ai placé un fichier de 50 adresses fictives sur ce fichier

https://www.cjoint.com/c/EEikIFSoCLF

sous la forme
PRENOM NOM 01
ADRESSE 01
CP01 VILLE01
Tel. 01 01 01 01 01
Fax. 01 02 02 02 01

PRENOM NOM 02
COMPLEMNENT 02
ADRESSE 02
CP01 VILLE02
Tel. 01 01 01 01 02
Fax. 01 02 02 02 02

que je voudrais pouvoir mettre sous la forme
PRENOM NOM 01 ADRESSE 01 CP01 VILLE01 Tel. 01 01 01 01 01 Fax. 01 02 02 02 01
PRENOM NOM 02 COMPLEMNENT 02 ADRESSE 02 CP01 VILLE02 Tel. 01 01 01 01 02 Fax. 01 02 02 02 02

Merci mille fois pour votre aide
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
8 mai 2015 à 11:27
OK, merci, bien reçu
vu la météo dans mon coin :-( , je regarde cet après-midi
0
Bonjour

Via55 j'ais changer ta macro qui marche bien mes sont fichier est pas terrible
A voir si ca te va comme ca
Sub TestComplement()
Ligne = Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row
   For L = Ligne To 2 Step -1
   T = T + 1
      If Cells(L, 1) = "" Then
         If T = 7 Then
            Rows(L + 2).Delete
         End If
         T = 0
      End If
   Next
Transposer
End Sub

Sub Transposer()
Dim Ligne As Long
' derniere ligne remplie en colonne 1 de la 1ere feuille
Ligne = Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row
X = 1 'ligne de départ de recopie sur feuille 2 (à modifier si nécessaire)
Y = 0
' boucle sur les lignes de la 1ere feuille
   For N = 2 To Ligne
   ' si vide on incrémente la variable ligne de 1 et on remet la variable colonne à 0
      If Cells(N, 1) = "" Then
            X = X + 1: Y = 0
      ' sinon on incrémente la variable colonne de 1 et on copie en 2eme feuille
         Else
            Y = Y + 1
            Sheets(Feuil2.Name).Cells(X, Y) = Cells(N, 1)
      End If
   Next
End Sub

A+
Maurice
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
8 mai 2015 à 12:29
Et combien de temps mettrez vous pour traiter 40000 lignes ?
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié par michel_m le 8/05/2015 à 14:16
Re
Il est peut-^tre dommage que la colonne 3 ne soit pas vide lorsque la ligne "complément" n'existe pas mais c'est ce que tu as demandé..

ci joint proposition
Option Explicit
Option Base 1
'-------------------------------------------------------
Sub transposer_col_lig()
Dim Derlig As Long, T_in, Nbre As Integer, T_out
Dim Col As Byte, cptr As Long, Idx As Integer
Dim Start As Single

Start = Timer
'----- ---initialisations
Application.ScreenUpdating = False 'fige l'écran pour rapidité et confort
Range("D30:H" & 6500).Clear ' nettoyage de la restitution
'mémorisation des données en RAM: évite les AR Ram-Ecran chronophages
Derlig = Columns("A").Find(what:="*", searchdirection:=xlPrevious).Row
T_in = Application.Transpose(Range("A2:A" & Derlig + 1))
'nombre de blocs adresse à traiter et preparation variable-tableau de sortie
Nbre = Application.CountIf(Range("A2:A" & Derlig), "") + 1
ReDim T_out(Nbre, 6)

'-------transposition en Ram vertical-horizontal
For cptr = 1 To UBound(T_in)
Idx = Idx + 1
Col = 1
While T_in(cptr) <> ""
T_out(Idx, Col) = T_in(cptr)
cptr = cptr + 1
Col = Col + 1
Wend
Next

'----restitution données transposées horizontalement
Range("D30").Resize(Nbre, 6) = T_out

Application.ScreenUpdating = False
MsgBox "Transposition de " & Nbre & " adresses en: " & Timer - Start & " sec."
End Sub


La maquette
https://www.cjoint.com/?3EioARaFPwN

Michel
0
MaxwellCosta
8 mai 2015 à 21:31
Je m'excuse de vous déranger à nouveau...

J'ai téléchargé le fichier et j'ai lancé la macro mais "transposer_co_lign" j'ai obtenu " Erreur d'éxecution 9 " et en cliquant sur Débogage, j'ai
If T_in(cptr) = "" Then qui est surligné en jaune.

Que dois-je faire ?

Merci
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
9 mai 2015 à 07:37
Bonjour,
Excuse moi je n'avais sauvegardé la maquette :-/
le code transmis hier est bon
ci joint la maquette
https://www.cjoint.com/?3EjhXNwqeL5

de toutes façons, il faudra que tu fasses un copier-coller du code dans ton classeur et STP, me dire le temps d'exécution pour tes 6000 adresses
0
MaxwellCosta
9 mai 2015 à 09:56
Bonjour et merci beaucoup pour cette Macro

La macro une fois copier dans mon fichier fonctionne apparemment pour certaine format d'adresse

J'ai l'impression que si le format reste ainsi
PRENOM NOM 01
ADRESSE 01
CP01 VILLE01
Tel. 01 01 01 01 01
Fax. 01 02 02 02 01

ça fonctionne mais dés que la macro rencontre des adresses de type
PRENOM NOM 01
s/c COMPLEMENT 01
ADRESSE 01
CP01 VILLE01
Tel. 01 01 01 01 01
Fax. 01 02 02 02 01

ou

PRENOM NOM 02
s/c COMPLEMENT 02
ADRESSE 02
CP01 VILLE02


Là ça met

Erreur d'exécution '9'
L'indice n'appartient pas à la sélection

et si je clique sur débogage, j'ai

T_out(Idx, Col) = T_in(cptr)
qui est surligné en jaune.

Je ne sais pas si ça vient du fait qu'il y ai un "/" ou du nombe de ligne du bloc adresse (6 ligne pour un bloc ou 4 pour l'autre)

Peut être aurais-je dut te préciser cela dans le format que je vous avez envoyé mais je viens juste de m'apercevoir que peut-être cela pouvait causer une erreur

Aurais-tu une solution ?

Merci beaucoup pour ton aide
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
9 mai 2015 à 10:40
je viens d'essayer avec des blocs d'1 ligne jusqu'à 6: pas de problèmes
(juste modifier le nettoyage des cellules (h-->I) au depart macro
https://www.cjoint.com/?3Ejk1PbxAZ0

0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 711
9 mai 2015 à 11:29
Salut Michel,

Si je puis me permettre une petite modification lorsque la ligne "complément" n'existe pas
https://www.cjoint.com/c/EEjlNaTnHJH

Pour Erreur d'exécution '9' , peut-être le byte...

Bonne journée sous le soleil !
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310 > gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020
9 mai 2015 à 13:42
Salut Gb ;o)

Merci pour la ligne complément! je l'ai signalé à Maxwellcosta du psg car cela pourrait constituer une liste de données exploitable mais pas de réaction de sa part...

Si je me base sur un volume maxi pour 6000 adresses soit 7*6000=42000 cptr doit être en long, Idx en Integer, col en byte(1 à 6) mais erreur veut dire qu'un compteur dépasse la limite qui lui est fixée au départ
Pas de pb avec ma maquette donc faudra peut-^tre regarder avec le classeur original (et non une copie) et passer en Mp pour la confidentialité... j'attend la réponse de Maxwell.
Bon après midi
0
MaxwellCosta Messages postés 17 Date d'inscription vendredi 12 décembre 2014 Statut Membre Dernière intervention 20 juin 2019
9 mai 2015 à 19:51
Bonsoir à vous 2,

Veuillez excuser le retard de ma réponse je ne fait que rentrer maintenant.

Je viens de tester vos macros et j'ai la même erreur

Erreur d'execution '9':

L'indice n'appartient pas à la sélection

T_out(Idx, Col) = T_in(cptr)

Si vous le permettez j'ai mis en fichier joint le fichier Excel des adresses que je souhaite traiter à cette adresse

https://www.cjoint.com/c/EEjt5X6SKBb

Je connais les normes de confidentialité de CCM mais ce fichier ne rentre pas dans cette clause puisqu'il est disponible à cette adresse publique

http://www.oec-paris.fr/annuaire/resultats.htm?type=&nom=&code_postal=&ville=&rpp=6000&page=1

En plus je comptais ensuite me palucher les adresses Email et les sites web représentées par une enveloppe et une planète sur la droite de cette page

Si par hasard, vous arriviez en plus à transposer le tout en ligne ce serait super sinon je me contenterai bien volontiers de votre aide sur le fichier Excel 2007 que j'ai placé en fichier joint.

Je m'excuse encore une fois pour le retard de ma réponse.

Je vous remercie grandement pour l'aide que vous m'apportez

Maxwell
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 711
9 mai 2015 à 22:08
Bonjour,

En fait ton fichier n'est pas aussi limpide que ton exemple !
Le voici transposé avec la macro : https://www.cjoint.com/c/EEjwubrHMcv

Pour les adresses mail et sites web c'est une autre procédure qu'il faudrait faire.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié par michel_m le 10/05/2015 à 08:22
Bonjour gb, maxwell

bon, il y avait encore une copie folko (manque ligne vide entre 2 blocs)
j'ai apporté 2 modifs mineures : suppression de la variable nombre
 ' preparation variable-tableau de sortie
ReDim T_out(10000, 7)

et donc à la fin
'----restitution données transposées horizontalement
Range("D30").Resize(Idx, 6) = T_out
Application.ScreenUpdating = False
MsgBox "Transposition de " & Idx & " adresses en: " & Timer - Start & " sec."


Bien, ton astuce du Dok :o)

Je n'ai pas installé outlook; de toutes façons il faut d'abord transporter les adressses mail sur le classeur... sacrée paluche comme tu dis, Maxwell
Pour moi, là, on ferait à la place et ce n'est plus un coup de main dans le cadre de l'entraide
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 711
10 mai 2015 à 10:16
Salut Michel,

Tu as tout à fait raison !
mais ces enveloppes m'ont intrigué et j'ai voulu voir ce que l'on pouvait en faire et finalement elles sont exploitables : j'ai laissé la petite macro pour récupérer les adresses afin qu'elles puissent être exploitées dans la table mémoire.

Bon dimanche à toi.
0
MaxwellCosta Messages postés 17 Date d'inscription vendredi 12 décembre 2014 Statut Membre Dernière intervention 20 juin 2019
10 mai 2015 à 09:35
Bonjour,

J'ai bien téléchargé le fichier et c'est parfait.

Je vous remercie tous les deux pour le temps que vous avez passés sur mon problème et je regrette de ne pas vous avoir donné le fichier avant car vous auriez perdu beaucoup moins de temps.

Merci encore
Maxwell
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 711
10 mai 2015 à 09:55
Bonjour,

Allez cerise sur le gâteau du dimanche, voilà ton classeur avec les adresses mail et site avec les téléphone formatés :

https://www.cjoint.com/c/EEkkglRyjxZ

C'était du travail de romain pour récupérer manuellement, surtout qu'eux n'avaient pas internet !
Bon dimanche
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
10 mai 2015 à 11:30
sacré boulot et joli code
j'ai pas tout pigé sur la macro des adresse mais je regarderai à t^te reposée
bon dimanche ensoleillé comme ici
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 711
10 mai 2015 à 11:56
En fait, la récupération du site a les adresses en double, dans les enveloppes et globes mais aussi dans les ">" de la colonne A qui sont ignorés, c'est sans doute ce qui t'a perturbé. C'était plus simple que ce que j'imaginai finalement.
Profite bien du soleil et bon apéro !
0
MaxwellCosta Messages postés 17 Date d'inscription vendredi 12 décembre 2014 Statut Membre Dernière intervention 20 juin 2019
10 mai 2015 à 10:02
Bonjour,

Merci beaucoup pour ce nouveau fichier tout transposer qui va me faire gagner un temps fou.

Merci encore
Maxwell
0