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)
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
gorwel2
Le #26384114
Un oubli : il peut y avoir le champs "Site web :" qui apparaît dans la li ste. Je mets à jour le fichier d'exemple ici : http://www.cjoint.com/c/FA mpuQktXna

Le mardi 12 janvier 2016 15:14:42 UTC+1, a écrit :
Bonjour les experts,...

*EX :
Je voudrais les données sous cette forme... :
A B C D E F G H I J
1 Nom Qualif Activités Rue CP Ville Tél Fax E-mail Site web

... et voici une extrait de la longue liste telle qu'elle se présente a ctuellement dans une seule colonne :

Nom 1
Qualif
Activités :
Activité1
Activité2
Activité3
Activité4
Rue
CP Ville
Tél :
Fax :
E-mail :
Site web : 

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 :
MichD
Le #26384229
Bonjour,

Voir le premier fichier que tu as publié.

http://www.cjoint.com/c/FAnnI0s6wDG
gorwel2
Le #26384277
Le mercredi 13 janvier 2016 14:36:21 UTC+1, MichD 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.
MichD
Le #26384370
Ton fichier, de la manière dont il est organisé, il est presque
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!
gorwel2
Le #26384434
Le jeudi 14 janvier 2016 21:24:10 UTC+1, MichD a écrit :
Ton fichier, de la manière dont il est organisé, il est presque
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 t on
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.
MichD
Le #26384446
J'ai besoin d'une liste de TOUTES LES ACTIVITÉS que l'on peut rencontrer
dans ton fichier et non plus d'enregistrements...

Exemple : "Ski", "Hockey", "Tennis" .... "Marche".
gorwel2
Le #26384607
d 'Le vendredi 15 janvier 2016 18:47:38 UTC+1, MichD a écrit :
J'ai besoin d'une liste de TOUTES LES ACTIVITÉS que l'on peut rencontre r
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.
isabelle
Le #26384739
bonjour 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 :
d 'Le vendredi 15 janvier 2016 18:47:38 UTC+1, MichD a écrit :
J'ai besoin d'une liste de TOUTES LES ACTIVITÉS que l'on peut rencontrer
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.

isabelle
Le #26384746
j'ai allégé un peu le code,

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
Le #26384747
oups oublie la version allégée, elle ne fonctionne pas :-(
isabelle
Publicité
Poster une réponse
Anonyme