Création d'une base d'adresses

rophann

XLDnaute Nouveau
Bonjour,

Assez peu habitué a manier du texte sous Excel je cherche une solution pour déployer en colonnes, les données de noms, d' adresses etc... importées dans la première colonne de la feuille.

J'ai pris soin de repérer chaque cellule par n, n1, pour les cellules contenant des noms, a,a1,a2, pour les adresses, etc....

je ne sais pas si j'utilise la bonne technique pour repérer les différents types de cellules.

Est il possible de de demander a Excel d'envoyer les données des cellules contenant n, dans la colonne "nom"
n1, dans la colonne nom-1 et ainsi de suite ??

Merci par avance pour votre aide ;)

Rophann
 

rophann

XLDnaute Nouveau
Re : Création d'une base d'adresses

salut feutrine

j'ai toutes les infos, nom, adresse tel etc.... empilées dans une seule colonne,

mes repères (n,)>> nom (a,)>> adresse sont dans les cellules, ça donne :

n, MARTIN
n1, Paul
a, 3 rue d'ulm
a1, BP24
cp, 75008
v, Paris
...

j'aimerais dispatcher ça en colonnes, j'ai 3000 entrées à traiter:p

merci
 

jp14

XLDnaute Barbatruc
Re : Création d'une base d'adresses

Bonsoir

Ci dessous le code pour réaliser cette opération
Code:
Sub repartir()
Dim i As Long
Dim lidep1 As Long
dim ligne1 as long
Dim j As Long

Dim nomfeuille1 As String

Dim col1 As String
Dim col2 As String
Dim posv As Integer
Dim col3 As String

Dim cellule As Range


col1 = "a"
lidep1 = 2
With Sheets(ActiveSheet.Name)
    For Each cellule In .Range(col1 & lidep1 & ":" & col1 & .Range(col1 & "65536").End(xlUp).Row)
        If cellule.Value <> "" Then
            posv = InStr(1, cellule.Value, ",")
            col2 = Mid(cellule.Value, 1, posv - 1)
            Select Case col2
                Case "n"
                    col3 = "B"
                     ligne1 = .Range(col3 & "65536").End(xlUp).Row + 1
                Case "n1"
                    col3 = "C"
                Case "a"
                    col3 = "D"
                Case "a1"
                    col3 = "e"
                Case "cp"
                    col3 = "f"
                Case "v"
                    col3 = "g"
                    
                    
                    
            End Select

                .Range(col3 & ligne1) = Mid(cellule.Value, posv + 2, 100)

            
            
            
            
        End If
    Next cellule


End With
End Sub

En remplaçant n,a,a1,.. par le nom de la colonne cela supprimerait dans la macro "select case"
b, MARTIN
c, Paul
d, 3 rue d'ulm
e, BP24
f, 75008
g, Paris
col2 = Mid(cellule.Value, 1, 1) donnerait directement le nom de la colonne

JP

mise à jour : pour changer de ligne lorsqu'on trouve un nouveau nom
 
Dernière édition:

rophann

XLDnaute Nouveau
Re : Création d'une base d'adresses

re feutrine,

forcement c'est aléatoire sinon c'est pas drôle ;)

j'ai parfois jusqu'à 4 noms, ou 4 entrées d'adresses, d'où mon idée de les repérer en amont, par des n, n1, etc... mais suis pas très sur de la qualité de ces repères

merci

Bonsoir jp14

je vois pas bien comment utiliser l'outil de conversion dans ce cas de figure

merci
 

rophann

XLDnaute Nouveau
Re : Création d'une base d'adresses

bonsoir Chris

Ah ! la source du problème ce sont des données qui ont été rentrées dans Word plutot que dans Excel,
sans tableau, juste des sauts de ligne

seul repère: l'e-mail a la fin de chaque bloc d'adresse, ce qui ma déjà permis de séparer les blocs

Me voila donc avec une entrée par ligne
facile de repérer les N° de tel ou de fax, mais comment différencier un nom, d'un nom de rue ? d'où l'idée des repères en début de ligne, choisi arbitrairement >> "n, ou n1," pour signaler les noms
"a,a1,ou a2,"pour signaler les adresses etc...

tout ça pour aboutir à un fichier texte importé dans excel sous forme d'une seule colonne

voila j'ai fait aussi clair que possible
Merci


jp14 merci, je vais essayer ça;)
 

chris

XLDnaute Barbatruc
Re : Création d'une base d'adresses

Bonjour

As-tu systématiquement une adresse e.mail en fin de bloc ?
Y a t'il une ligne vide entre 2 blocs ?
Dans un cas comme dans l'autre, il y a un moyen très rapide dans Word pour remettre d'aplomb.
Si pas de ligne vide mais des mails systématique, quelles sont les extensions :
  • .fr
  • .net
  • ...
Dis-moi afin que te donne la façon de faire en fonction de ton cas
 

rophann

XLDnaute Nouveau
Re : Création d'une base d'adresses

Merci Chris

Pour ce qui est de la mise d'aplomb dans Word j'avais déjà passé cette phase, c'est dans Excel que ça se corse...

Bonjour, JP14

j'obtiens des résultats partiels dans ta macro, mais le principe semble être le bon, je creuse, je creuse:p bonne initiation au code pour moi;)

Merci
 
C

Compte Supprimé 979

Guest
Re : Création d'une base d'adresses

Salut Rophann,

Ah ! la source du problème ce sont des données qui ont été rentrées dans Word plutot que dans Excel,
sans tableau, juste des sauts de ligne
Je n'ai peut-être pas tout compris, mais pourquoi ne pas faire un copier/coller !

Logiquement ton fichier de "données" word doit avoir le nom, adresse, email, etc ... séparé par des tabulation ou espaces, non !?

Un copier/coller de Word dans Excel, dvrait mettre les valeurs dans des cellules séparées !?

A+
 

chris

XLDnaute Barbatruc
Re : Création d'une base d'adresses

Bonjour

Bruno : non dans Word les données sont sur des lignes différentes.

Je proposais une méthode qui prend 3 mn s'il y a bien une adresse mail pour chaque personne mais rophann n'est pas intéressé.
 

rophann

XLDnaute Nouveau
Re : Création d'une base d'adresses

salut a tous

Merci JP14 pour les modifs apportées au code, mais pour le moment ça ne fonctionne pas, y'a du déboguage dans l'air... je continue mes tests...

Bruno: copier /coller impossibles sur près de 3000 entrées, et comme il y a aléatoirement plusieurs adresses ou plusieurs noms, il faut bien trouver un moyen de les différencier..

Chris: j'ai déjà fais un tri dans word en me basant sur les e-mails, mais expose ta méthode tout de même

merci a tous
 

jp14

XLDnaute Barbatruc
Re : Création d'une base d'adresses

Bonjour


salut a tous

Merci JP14 pour les modifs apportées au code, mais pour le moment ça ne fonctionne pas, y'a du déboguage dans l'air... je continue mes tests...
merci a tous

Pour faciliter les test
rajouter des msgbox pour indiquer l'erreur
Par exemple
case else
Call MsgBox("Colonne non trouvé", vbExclamation, Application.Name)

JP
 

Discussions similaires

Statistiques des forums

Discussions
314 422
Messages
2 109 447
Membres
110 482
dernier inscrit
ilyxxxh