Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

11 réponses
Avatar
gorwel2
Bonjour les experts,=20

Je reviens vers vous (et peut-=EAtre Isabelle ?) pour un nouveau cas. C'est=
toujours pour rechercher/d=E9placer automatiquement de nombreuses cellules=
sous forme de "fiches" en ligne pour les avoir sous formes de donn=E9es en=
colonnes. Comme je l'avais vu =E0 cette adresse (http://boisgontierjacques=
.free.fr/pages_site/cellules.htm), =E0 la rubrique "Cr=E9ation d'une BD =E0=
partir de fiches", j'ai vu que =E7a avait l'air faisable mais je n'arrive =
pas =E0 bien l'appliquer =E0 mon format de tableau (voir ci-dessous*).

La difficult=E9 vient du fait que les fiches ne sont pas forc=E9ment compl=
=E8tes ou bien renseign=E9es (le champs "Activit=E9s" peut prendre 2 lignes=
ou plus, voire vide ! tout comme le champs "Rue")... En revanche, les fich=
es sont syst=E9matiquement s=E9par=E9es par une ligne vierge.

Plus parlant, je joins un exemplaire du fichier =E0 cette adresse : http://=
www.cjoint.com/c/FAmokGzKdAa =20

A vos talents, cordialement, Go2.

*EX :=20
Je voudrais les donn=E9es sous cette forme... :=20
A B C D E F G H I
1 Nom Qualif Activit=E9s Rue CP Ville T=E9l Fax E-mail
=20
... et voici une extrait de la longue liste telle qu'elle se pr=E9sente act=
uellement dans une seule colonne : =20

Nom 1
Qualif
Activit=E9
Activit=E91
Activit=E92
Activit=E93
Activit=E94
Rue
CP Ville
T=E9l
Fax
E-mail

Nom 2
Activit=E9
Activit=E91

CP Ville
T=E9l
Fax

Nom 3
Qualif
Activit=E9
Activit=E91
Activit=E92
Activit=E93
Activit=E94
Activit=E95
Activit=E96
Activit=E97
Activit=E98
Rue
CP Ville
T=E9l
Fax

Note : les activit=E9s pourront bien s=FBr =EAtre concat=E9n=E9es et j'ai b=
esoin de s=E9parer le code postal de la ville dans 2 colonnes diff=E9rentes=
(sans traces d'espaces dans le texte si possible...) Pour le t=E9l et le f=
ax, il faut si possible enlever les mentions "T=E9l : " et "Fax : " des num=
=E9ros, mais c'est moins grave, je pourrais les supprimer par lots une fois=
en colonnes)...

10 réponses

1 2
Avatar
gorwel2
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 :
Avatar
MichD
Bonjour,

Voir le premier fichier que tu as publié.

http://www.cjoint.com/c/FAnnI0s6wDG
Avatar
gorwel2
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.
Avatar
MichD
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!
Avatar
gorwel2
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.
Avatar
MichD
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".
Avatar
gorwel2
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.
Avatar
isabelle
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.

Avatar
isabelle
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
Avatar
isabelle
oups oublie la version allégée, elle ne fonctionne pas :-(
isabelle
1 2