Création BDD en colonnes à partir de fiches en ligne
Le
gorwel2

Bonjour les experts,
Je reviens vers vous (et peut-être Isabelle ?) pour un nouveau cas. C'est=
toujours pour rechercher/déplacer automatiquement de nombreuses cellules=
sous forme de "fiches" en ligne pour les avoir sous formes de données en=
colonnes. Comme je l'avais vu à cette adresse (http://boisgontierjacques=
.free.fr/pages_site/cellules.htm), à la rubrique "Création d'une BD à=
partir de fiches", j'ai vu que ça avait l'air faisable mais je n'arrive =
pas à bien l'appliquer à mon format de tableau (voir ci-dessous*).
La difficulté vient du fait que les fiches ne sont pas forcément compl=
ètes ou bien renseignées (le champs "Activités" peut prendre 2 lignes=
ou plus, voire vide ! tout comme le champs "Rue") En revanche, les fich=
es sont systématiquement séparées par une ligne vierge.
Plus parlant, je joins un exemplaire du fichier à cette adresse : http://=
www.cjoint.com/c/FAmokGzKdAa
A vos talents, cordialement, Go2.
*EX :
Je voudrais les données sous cette forme :
A B C D E F G H I
1 Nom Qualif Activités Rue CP Ville Tél Fax E-mail
et voici une extrait de la longue liste telle qu'elle se présente act=
uellement dans une seule colonne :
Nom 1
Qualif
Activité
Activité1
Activité2
Activité3
Activité4
Rue
CP Ville
Tél
Fax
E-mail
Nom 2
Activité
Activité1
CP Ville
Tél
Fax
Nom 3
Qualif
Activité
Activité1
Activité2
Activité3
Activité4
Activité5
Activité6
Activité7
Activité8
Rue
CP Ville
Tél
Fax
Note : les activités pourront bien sûr être concaténées et j'ai b=
esoin de séparer le code postal de la ville dans 2 colonnes différentes=
(sans traces d'espaces dans le texte si possible) Pour le tél et le f=
ax, il faut si possible enlever les mentions "Tél : " et "Fax : " des num=
éros, mais c'est moins grave, je pourrais les supprimer par lots une fois=
en colonnes)
Je reviens vers vous (et peut-être Isabelle ?) pour un nouveau cas. C'est=
toujours pour rechercher/déplacer automatiquement de nombreuses cellules=
sous forme de "fiches" en ligne pour les avoir sous formes de données en=
colonnes. Comme je l'avais vu à cette adresse (http://boisgontierjacques=
.free.fr/pages_site/cellules.htm), à la rubrique "Création d'une BD à=
partir de fiches", j'ai vu que ça avait l'air faisable mais je n'arrive =
pas à bien l'appliquer à mon format de tableau (voir ci-dessous*).
La difficulté vient du fait que les fiches ne sont pas forcément compl=
ètes ou bien renseignées (le champs "Activités" peut prendre 2 lignes=
ou plus, voire vide ! tout comme le champs "Rue") En revanche, les fich=
es sont systématiquement séparées par une ligne vierge.
Plus parlant, je joins un exemplaire du fichier à cette adresse : http://=
www.cjoint.com/c/FAmokGzKdAa
A vos talents, cordialement, Go2.
*EX :
Je voudrais les données sous cette forme :
A B C D E F G H I
1 Nom Qualif Activités Rue CP Ville Tél Fax E-mail
et voici une extrait de la longue liste telle qu'elle se présente act=
uellement dans une seule colonne :
Nom 1
Qualif
Activité
Activité1
Activité2
Activité3
Activité4
Rue
CP Ville
Tél
Fax
Nom 2
Activité
Activité1
CP Ville
Tél
Fax
Nom 3
Qualif
Activité
Activité1
Activité2
Activité3
Activité4
Activité5
Activité6
Activité7
Activité8
Rue
CP Ville
Tél
Fax
Note : les activités pourront bien sûr être concaténées et j'ai b=
esoin de séparer le code postal de la ville dans 2 colonnes différentes=
(sans traces d'espaces dans le texte si possible) Pour le tél et le f=
ax, il faut si possible enlever les mentions "Tél : " et "Fax : " des num=
éros, mais c'est moins grave, je pourrais les supprimer par lots une fois=
en colonnes)
Le mardi 12 janvier 2016 15:14:42 UTC+1, a écrit :
Voir le premier fichier que tu as publié.
http://www.cjoint.com/c/FAnnI0s6wDG
Merci beaucoup MichD pour tes efforts... mais y a un hic !
Rassure-toi, c'est de ma faute : en fait, les infos de la colonne B ("Nom", "qualif", "Activités",...) n'existent pas dans mon listing original (je les avais mises effectivement pour repérer plus facilement les données sur le fichier de test).
Je constate que la macro fonctionne bien avec les données test mais lorsq ue je teste avec mes fiches (copier-coller en colonne A), il ne se produit rien sans la colonne B (si je la laisse, le résultat est décalé et s' arrête à la 3ème ligne avec un boîte de dialogue mentionnant : "Err eur d'execution '9'...)
J'imagine que tu avais basé la macro sur ces infos de la colonne B, non ?
Je remets un lien vers le fichier débarrassé des infos de la colonne B : http://www.cjoint.com/c/FAoiyzQCAya (j'ai laissé la macro et l'onglet " MichD").
A vous lire, Cordialement, Go2.
impossible de créer une macro pour faire ce que tu désires.
Exemple d'une difficulté :
Après les activités, tu as le nom de la rue. Comment faire comprendre à
la macro que l'information suivant la dernière activité n'est pas une
activité mais le nom de la rue.
As-tu une liste "EXHAUSTIVE" des activités possibles utilisées dans ton
fichier? Peux-tu en regrouper une? Si oui, publie-la!
Bonjour,
J'ai bien conscience que c'est difficile mais j'ai bon espoir ! (ça fait vivre ;-!) Je mets un extrait aussi exhaustif que possible ici :
http://www.cjoint.com/c/FApqDYINnYa (j'ai repris la macro dedans)...
Je me disais que les seuls points de repère était le champs télépho ne (il apparaît systématiquement je pense) ainsi que les lignes qui s éparent chaque fiche. (Il peut y avoir une ligne vierge ou 2 après les activités mais ça je pourrais le rectifier si besoin, ex : ligne n°13 4)...
A vous lire, cdlt, Go2.
dans ton fichier et non plus d'enregistrements...
Exemple : "Ski", "Hockey", "Tennis" .... "Marche".
Ok, j'ai compté une vingtaine d'activités différentes (22 en fait) :
Nautisme
Planche
Tennis
Voile
Surf
Volley
Badminton
Rando
Paramoteur
Body
Paddle
Marche
Parachute asc.
Pédalo
Quad
Squash
Jet-ski
Ski nautique
Hydrospeed
Via ferrata
Equitation
Escalade
Cdlt, Go2.
j'ai mis la liste des Activitées sur la feuille Activitées, et j'ai nommé la
plage dynamiquement :
Name: "Activitées"
Formule: ÞCALER(Activités!$A$2;;;NBVAL(Activités!$A:$A)-1)
Sub test()
Dim Ligne As Long, derCell As Long, n As Integer, a As Long
Dim Sh1 As Worksheet, Sh2 As Worksheet
Set Sh1 = Worksheets("Fiches en ligne") 'feuille liste de données
Set Sh2 = Worksheets("MichD") 'feuille résultat
derCell = Sh1.Cells(Rows.Count, 1).End(xlUp).Row + 1
Ligne = 2
For a = 1 To derCell
Set pl = Sh1.Range("A" & a)
If IsEmpty(pl) Then n = 1
Select Case a
Case 1: Sh2.Cells(Ligne, 1) = pl
Case Else: If IsEmpty(Sh1.Range("A" & a - 1)) Then Sh2.Cells(Ligne, 1) = pl
End Select
If pl = "Qualif BEES" Then
Sh2.Cells(Ligne, 2) = "Qualif BEES"
End If
If IsNumeric(Left(pl, 5)) Then
Sh2.Cells(Ligne, 4) = Sh1.Range("A" & a - 1)
Sh2.Cells(Ligne, 5) = Val(Left(pl, 5))
Sh2.Cells(Ligne, 6) = Right(pl, Len(pl) - 6)
End If
If Left(pl, 3) = "Tel" Then
Sh2.Cells(Ligne, 7) = "" & Right(pl, Len(pl) - 6)
End If
If Left(pl, 3) = "Fax" Then
Sh2.Cells(Ligne, 8) = "" & Right(pl, Len(pl) - 6)
End If
If Left(pl, 8) = "E-mail :" Then
Sh2.Cells(Ligne, 9) = Right(pl, Len(pl) - 9)
End If
If Left(pl, 8) = "Site web" Then
Sh2.Cells(Ligne, 10) = Right(pl, Len(pl) - 10)
End If
If Not IsError(Application.Match(pl, Range("Activités"), 0)) Then
Activités = Activités & " " & pl.Value
End If
If n = 1 Then
Sh2.Cells(Ligne, 3) = Activités
Activités = "" 'remise à zéro des activités
Ligne = Ligne + 1 'prochain client
n = 0
End If
Next
End Sub
isabelle
Le 2016-01-17 09:39, a écrit :
Sub test_2()
Dim Ligne As Long, derCell As Long, n As Integer, a As Long
Dim Sh1 As Worksheet, Sh2 As Worksheet
Set Sh1 = Worksheets("Fiches en ligne") 'feuille liste de données
Set Sh2 = Worksheets("MichD") 'feuille résultat
derCell = Sh1.Cells(Rows.Count, 1).End(xlUp).Row + 1
Ligne = 2
For a = 1 To derCell
Set pl = Sh1.Range("A" & a)
If IsEmpty(pl) Then n = 1
Select Case a
Case 1: Sh2.Cells(Ligne, 1) = pl
Case Else: If IsEmpty(Sh1.Range("A" & a - 1)) Then Sh2.Cells(Ligne, 1) = pl
End Select
Select Case pl
Case "Qualif BEES": Sh2.Cells(Ligne, 2) = "Qualif BEES"
Case "Tel": Sh2.Cells(Ligne, 7) = "" & Right(pl, Len(pl) - 6)
Case "Fax": Sh2.Cells(Ligne, 8) = "" & Right(pl, Len(pl) - 6)
Case "E-mail": Sh2.Cells(Ligne, 9) = Right(pl, Len(pl) - 9)
Case "Site web": Sh2.Cells(Ligne, 10) = Right(pl, Len(pl) - 10)
End Select
If IsNumeric(Left(pl, 5)) Then
Sh2.Cells(Ligne, 4) = Sh1.Range("A" & a - 1)
Sh2.Cells(Ligne, 5) = Val(Left(pl, 5))
Sh2.Cells(Ligne, 6) = Right(pl, Len(pl) - 6)
End If
If Not IsError(Application.Match(pl, Range("Activités"), 0)) Then
Activités = Activités & " " & pl.Value
End If
If n = 1 Then
Sh2.Cells(Ligne, 3) = Activités
Activités = "" 'remise à zéro des activités
Ligne = Ligne + 1 'prochain client
n = 0
End If
Next
End Sub
isabelle
isabelle