XL pour MAC Retraitement (trop complexe pour moi) d'une base de données

didcac

XLDnaute Occasionnel
Bonjour à tous,
Je suis bloqué par mon incompétence...
Ayant une base de données EXCEL pour MAC plutôt mal organisée, je souhaite retraiter certaines informations de type "texte". Je précise que si c'est aussi curieusement agencé, ce que c'est un export de FILEMAKER, à l'origine, qui a éclaté les données sur diverses colonnes.
J'ai joint un fichier EXCEL (très partiel car il y a en réalité 4.000 lignes / fiches !) afin que vous puissiez voir comment procéder. Les colonnes susceptibles d'accueillir les nouvelles données retraitées pourraient commencer à la colonne EA, EB, EC, ED, etc, jusqu'à l'infini ou presque... Je les ai renommées exprès (et dans le bon ordre logique des choses).
D'une manière générale, j'avais défini auparavant une méthode de saisie UNIFORMISÉE qui va probablement aider dans ce retraitement.
En gros, la voici :
• une personne est toujours explicitée par Mr ou Mme ou Mlle (puis un espace) puis son prénom (si connu) (puis un espace) puis nom de famille.
• son téléphone est une suite de minimum 8 chiffres (souvent 10) car il y a parfois des numéro anciens sans préfixe.
• les adresses mail, c'est classiquement un bloc de lettres autour de @ (avant y'a souvent le prénom-nom collé ou réuni par un underscore) et après une société se terminant par .com ou .fr (en général).

Il y a beaucoup de colonnes en tout, mais celles que je veux rectifier sont les suivantes (avec description du contexte et une idée de méthodologie selon moi) :

• Colonne P : Une cellule correspond à un très gros champ TEXTE de FILEMAKER. Ici, il y a des titre-prénom-nom, puis parfois une Fonction et/ou Service (toujours entre parenthèses), puis un ou deux téléphones, parfois un e-mail mais cela se termine TOUJOURS par un signe / (SLASH) avant de passer à une seconde personne qui a à peu près le même schéma, et ainsi de suite avec parfois 12 ou 16 personnes.
En fait, mon objectif est de créer diverses nouvelles colonnes qui récupèrent ces différentes données de manière à individualiser ces gens dans une fiche. Ainsi, chacun aura un téléphone unique et un e-mail personnel, si je veux leur envoyer un document nominativement, par exemple.
J'imagine qu'il faut commencer par recopier dans une colonne TEXTE les données globales de chaque individu en indiquant dans la Macro de s'arrêter au caractère Espace qui précède chaque SLASH de fin (signe que l'on passe ensuite à une nouvelle personne, sauf à la TOUTE FIN où il n'y en a en principe pas, normalement).
Voici un exemple concret du Fichier que je vais vous commenter :
En regardant par exemple la Cellule P18 (choisie au hasard) : il y a 5 personnes listées dans cette cellule Texte, dont il va falloir répartir les diverses données dans les cellules allant de la plage EA à WT (c'est déjà nommé et pré-structuré). Dans d'autres cellules de cette même colonne, cela va parfois jusqu'à 14 ou 16 personnes, voire parfois 1 seule (très aléatoire).

Je souhaiterais donc , si possible, voir apparaître les données dispatchées suivantes :
Colonne EA8 : Titre (civilité)
Colonne EB8 : Prénom
Colonne EC8 : Nom
Colonne ED8 : Service (ou Fonction) (sans copier les parenthèses)
Colonne EE8 : Téléphone 1
Colonne EF8 : Téléphone 2 éventuel
Colonne EG8 : Téléphone 3 éventuel
Colonne EH8 : Courriel
(jusqu'à 16 personnes, jusqu'à WT18)
et ainsi de suite pour la deuxième personne, puis troisième, etc.

• Colonne Q : C'est exactement pareil que Colonne P (des individus à reconfigurer sur le même schéma)
Colonne EI8 : Titre (civilité)
Colonne EJ8 : Prénom
Colonne EK8 : Nom
Colonne EL8 : Service (ou Fonction) (sans copier les parenthèses)
Colonne EM8 : Téléphone 1
Colonne EN8 : Téléphone 2 éventuel
Colonne EO8 : Téléphone 3 éventuel
Colonne EP8 : Courriel
(jusqu'à 16 personnes jusqu'à XB18)

• Colonne R : là, il faut dispatcher les deux types de données (adresse de sites internet et de courriels qui ont des structures bien caractéristiques) sur 2 colonnes (XD et XE)

• Colonne DZ : là des mots sont entre guillemets, et (selon le nombre de mots présent) il faut les dispatcher sur 1, 2 ou 3 colonnes (XF, XG et XH) sans réécrire les guillemets. Le premier mot dans XF, le deuxième éventuel en XG, le troisième éventuel en XH.


J'ignore si une seule Macro sera capable de tout gérer ainsi ???
La Macro devra être écrite pour avoir la taille de gérer jusqu"à 4.000 lignes (car la base de données est plus grosse qu'ici).

NB : dans l'immédiat, les colonnes P et Q ne sont pas à vider ou virer, car par commodité je me réserve la possibilité de les réunir dans un seul champ dénommé HISTORIQUE (archives globales) qui me permettra de balayer du regard un grand nombre d'informations sans perdre du temps à cliquer dans des cellules individuelles. Ces dernières seront en revanche utiles pour segmenter les actions de communication individuelles comme je l'ai déjà dit.

J'ai conscience que le résultat ne sera probablement pas parfait au sens où, même si j'ai essayé depuis fort longtemps de respecter un protocole de saisie homogène, on n'est jamais exempt d'erreur de frappe ou d'oubli divers qui remettent alors en question mon idée de méthode, mais si c'est exploitable à 80 %, ce serait déjà très bien.

Je sais qu'il y a ici des personnes hyper compétentes avec EXCEL, alors que moi-même n'ai que quelques rudiments très insuffisants. Merci de bien vouloir essayer de m'apporter les solutions que vous verriez de par votre grande expérience.
A vous lire.
Merci d'avance.
 

didcac

XLDnaute Occasionnel
Bonjour BrunoM45,
Je n'ai rien prévu de tel. Je suis assez en difficulté comme ça, en ce moment... Je pensais que c'était un Forum d'entraide...
En fait, je n'avais pas le sentiment que ce soit si compliqué à faire. J'ai passé du temps à tout expliciter mais en réalité cela consiste à utiliser une fonction qui isole un premier groupe de mots (jusqu'au premier SLASH), puis pareil pour le groupe suivant, et ainsi de suite.
Et la phase d'après, c'est du même genre. J'ai déjà créé les cellules d'accueil des données (en EA et au-delà).

Quelqu'un a-t-il une autre approche ?
 

didcac

XLDnaute Occasionnel
Bonjour à tous,
Après deux jours, je n'ai aucune réponse, ce qui est bien décevant, vous imaginez bien.
En attendant une possible aimable aide de votre part, j'ai essayé par moi-même et en quelques minutes j'ai réussi la phase n°1 qui consiste à éclater les différents individus à partir du "délimiteur" SLASH... Je suis étonné que personne n'ait su me faire cela, alors que moi-même je n'y connais vraiment pas grand chose en EXCEL... et qu'il existe un Bouton "Convertir texte" pour faire cela.
J'ai donc désormais, par exemple, une cellule qui accueille non plus 5 ou 10 personnes, mais une seule à chaque fois avec toutes ses données propres. Et à partir de là, il faut sans doute écrire une formule avec des FONCTIONS que je ne maîtrise pas pour redispatcher les éléments caractéristiques présents.

Tout d'abord, si vous le voulez bien, comment extraire le Service et/ou la Fonction, sachant que c'est la seule donnée/double donnée qui est écrite ENTRE PARENTHESES dans cette cellule au format TEXTE ? Je présume qu'il doit y avoir une Fonction permettant cela, non ?
Dans mon charabia perso, ce serait du style "Rechercher dans telle cellule le texte contenu entre deux parenthèses et le copier, sans les signes parenthèses, en Cellule X ou Y), a priori.
Merci de bien vouloir vous (re)pencher sur le sujet.
Ce ne sera donc pas une Macro globale, apparemment, mais diverses procédures successives, si je suppose bien.
Bien cordialement
 

didcac

XLDnaute Occasionnel
Ce n'est pas à proprement parler bidon, disons que ce sont des vieilles fiches caduques (personnes plus présentes, vieux téléphones, etc. Mais COMMENT le supprimer pour le remplacer (si j'ai bien compris par des noms totalement fictifs...) ? Déjà là je ne vois même plus le fichier...
 

zebanx

XLDnaute Accro
Bonjour didcac, eriiic et brunoM45 :cool:, le forum

Impossible de répondre à une présentation remplie de cette manière.
Si les champs sont partiellement remplis et compilés de cette manière, sans séparateur permettant de le faire correctement, comment faire ce que vous demandez ? :rolleyes:

Une petite aide toutefois avec un UDF pour spliter la colonne A (reprise de votre colonne P du #8) avec un séparateur " / ". Ca vous donne une idée du possible pour éclater des informations remplies dans une cellule normalement.
Mais ça reste bien maigre par rapport à la tâche qui vous attend.

xl-ment
zebanx
 

Pièces jointes

  • splitter.xlsm
    21.1 KB · Affichages: 11
Dernière édition:

didcac

XLDnaute Occasionnel
Bonjour zebanx,
Merci bien de vous intéresser à mon problème !
En effet, c'est une première étape qui est voisine mais mieux que ce que j'avais fait avec la fonction "Convertir" (ça m'évite un espace résiduel au début).

J'ai bien compris votre explication générale, l'absence de séparateur reconnu comme tel (hormis le SLASH), mais voici ce que je croyais (peut-être naïvement) :

Je pensais que le fait que chaque case comprenant désormais un seul Mme ou Mlle ou Mr pouvait déjà permettre de les ôter en les copiant dans une cellule "Civilité" dédiée.
Puis, la suite de lettres étant forcément le prénom (si ce sont : 1 Majuscule puis des minuscules) pouvait là aussi permettre d'alimenter un Champ "prénom", et enfin la suite de majuscules est forcément le nom.
Ainsi, petit à petit on arrive (intuitivement) à extraire diverses infos et peut-être à récupérer 70 à 80 % des données. Vous comprenez mon raisonnement ?

Et pour le téléphone, il n'y aurait pas une commande/fonction du genre "SI suite de 8 à 10 chiffres présente, ALORS copier dans un champ "téléphone" ?

Qu'en pensez-vous... ?
 

eriiic

XLDnaute Barbatruc
Bonjour,

j'ai été un peu plus loin dans le "diviser pour mieux régner".
C'est un modèle (déjà assez complet) pour la colonne P.
J'élimine une bonne partie (tous ?) des / non séparateurs de personnes car tu en avais sur le 1er fichier. J'élimine une bonne partie des principales anomalies.
Tu as des constantes à adapter au début.
A toi de lire tranquillement, de compléter, et de faire dans la même logique pour les autres colonnes.
Fais un recherche sur "débogage vba" si tu ne connais pas, tu en auras besoin.
Il faut savoir au minimum poser un point d'arrêt, faire en pas à pas, espionner des variables et des expressions.
Le résultat est en Q22 pour être pas trop loin.

Mais tu es sûr que tu ne peux pas avoir un export plus propre pour retraitement ?
Déjà "/" comme séparateur alors que tu en as dans les chaines ce n'est pas malin.
Style csv ou base de données avec les champs bien définis.
Parce que là tu vas avoir un paquet d'erreurs...
eric
 

Pièces jointes

  • Clients fictifs FMP 4.xlsm
    31.5 KB · Affichages: 9

didcac

XLDnaute Occasionnel
Bonjour,

j'ai été un peu plus loin dans le "diviser pour mieux régner".
C'est un modèle (déjà assez complet) pour la colonne P.
J'élimine une bonne partie (tous ?) des / non séparateurs de personnes car tu en avais sur le 1er fichier. J'élimine une bonne partie des principales anomalies.
Tu as des constantes à adapter au début.
A toi de lire tranquillement, de compléter, et de faire dans la même logique pour les autres colonnes.
Fais un recherche sur "débogage vba" si tu ne connais pas, tu en auras besoin.
Il faut savoir au minimum poser un point d'arrêt, faire en pas à pas, espionner des variables et des expressions.
Le résultat est en Q22 pour être pas trop loin.

Mais tu es sûr que tu ne peux pas avoir un export plus propre pour retraitement ?
Déjà "/" comme séparateur alors que tu en as dans les chaines ce n'est pas malin.
Style csv ou base de données avec les champs bien définis.
Parce que là tu vas avoir un paquet d'erreurs...
eric


Bonjour Eriiiic,
C'est globalement super comme résultat !! Merci beaucoup. C'est bien dans l'esprit de ce que j'imaginais possible. Chapeau !

Et en lisant le Pas à pas, et le texte en vert qui explicite bien l'action, j'ai ainsi pu voir les petites modifications (de paramétrage) à apporter :
• Nombre de personnes maximum : 20 (car j'ai d'autres fiches où y en a 18 ou 19 !)
• Créer 5 colonnes basiques maxi (au lieu de 4, car j'aimerais pouvoir séparer la Fonction du Service à partir de certains mot-clés Fonction que j'ai listés : Secrét = Secrétaire, Assist = Assistante, Perma = Permanente, Collab = Collaborateur, Colleg = Collègue, DG = Directeur Général, DIR = Directeur)
NB : pour cela, si tu penses y arriver, n'écris que 2 exemples pour me montrer et moi j'en rajouterai ensuite plusieurs autres en modifiant légèrement la Macro, mais au moins il me faut une base, un modèle, pour pouvoir écrire le 3ème ou 4ème mot-clé sans erreur dans la Formule que je ne maîtrise pas bien. Merci.
• Créer 5 téléphones maxi
• Créer 4 courriels maxi

Comme je pense avoir compris comment ta Macro se comporte en lignes Q22, R22, etc, j'ai créé à la fin exactement les colonnes (je pense chronologiquement adéquates) à partir de EA, EB, EC, etc, etc, à raison de :
• 14 colonnes par personne (5 basiques + 5 téléphones + 4 courriels), accolées à la suite les unes des autres pour recevoir la Colonne P,
• puis 14 autres après pour accueillir la Colonne Q (car comme je l'avais dit, il y a aussi des personnes en Colonne Q qui suivent exactement le même processus géré par la Macro).
NB : Les 14 premières, y'a écrit CSE dans le libellé, les 14 dernières non.
Ainsi, de EA à OT c'est la 1ère personne de P (jusqu'à la énième), et à partir de OU à ZN c'est la 1ère personne de Q (jusqu'à la énième).

Comme je ne sais pas trop comment modifier la Macro dans ce sens, et surtout ne veux pas faire d'erreur, je me permets de t'indiquer ces éléments précédents pour rectification globale.
Quant à la taille, je ne sais pas si elle s'ajuste "automatiquement" (telle qu'elle est écrite), mais sinon il me faudrait une plage de 4.000 lignes pour recevoir la base complète.


Sinon, concernant le format d'Export (évoqué hier), à partir de FILEMAKER PRO, je peux apparemment avoir :
• valeurs séparées par des tabulations
• valeurs séparées par des virgules
• XML
• DBF
• Classeurs EXCEL
• FILEMAKER PRO

Je ne sais pas si cela permet de mieux travailler pour la récupération ?

Je précise que les "/" qui séparent les gens ne viennent PAS de l'exportation mais de ma manière de travailler (j'ai eu cette idée il y a 29 ans... et à l'époque on n'imaginait pas forcément l'importance d'une bonne segmentation des données...), les e-mails n'existant pas.
Et quand tu évoques qu'il y a même d'autres SLASH, non séparateurs, dans les cellules, ceux-là sont à 99 % directement accolés à des chiffres, par exemple 96/97/98 signifiant que la personne a travaillé durant ces années (c'est un peu bête et ici dommage, mais à l'époque je n'ai pas fait attention bien que par ailleurs j'avais parfois écrit 96>98, bien mieux qui évitait ainsi le SLASH pour signifier pareil). EN REVANCHE, le séparateur de PERSONNES est TOUJOURS précédé d'un ESPACE et suivi d'un ESPACE (3 caractères successifs en tout). Voilà la nuance, qui peut peut-être aider.
NB : j'ai vu justement que tu avais astucieusement pu changer 96/97/98 par 96-97-98, ce qui est très bien. Il en sera de même pour d'autres cas similaires, je suppose. Parfait.

Encore merci pour tout !
Le Fichier (amélioré) est joint.
 

Pièces jointes

  • Clients fictifs FMP 4 rectifié TEST 2.xlsm
    31 KB · Affichages: 3

eriiic

XLDnaute Barbatruc
Bonjour,

Nombre de personnes maximum : 20 (car j'ai d'autres fiches où y en a 18 ou 19 !)
c'est prévu par la constante Const nbMaxPers As Long = 8 ' nb max de personnes par ligne
tu mets le nombre que tu veux.

Créer 5 colonnes basiques maxi (au lieu de 4, car j'aimerais pouvoir séparer la Fonction du Service à partir de certains mot-clés Fonction que j'ai listés : Secrét = Secrétaire, Assist = Assistante, Perma = Permanente, Collab = Collaborateur, Colleg = Collègue, DG = Directeur Général, DIR = Directeur)
idem, tu mets les nombres que tu veux dans :
Const nbMaxTel As Long = 3, nbMaxMail As Long = 2 ' nb tel et mail maxi récupérés Const nbDatasParPers As Long = 4 + nbMaxTel + nbMaxMail 'nb données par personnes
Tu pourrais te créer une constante nbDatasFixes as long =5, comme ça tu pourras passer à 6 facilement si le besoin vient.
et remplacer :
Const nbDatasParPers As Long = nbDatasFixes + nbMaxTel + nbMaxMail 'nb données par personnes
ainsi que partout ou tu vois qq chose alimantant result() du style :
result(lig, p * nbDatasParPers + 4) = rub à remplacer par :
result(lig, p * nbDatasParPers + nbDatasFixes ) = rub
et si tu vois + 5 tu remplaces par nbDatasFixes +1 bien entendus

Dans Case 1 je t'ai mis un exemple mais tu fais ce que tu veux.
Pour tirer 2 données depuis Service, c'est à toi de créer le code et de remplir les bonnes colonnes de Result()
Je te conseille de créer une fonction personnalisée que tu pourras compléter au fil des myriades de cas particuliers que tu verras arriver au fur et à mesure.
Difficile de te donner un exemple, un cas particulier étant, par définition, particulier...
Exemple à minima :
VB:
Function fonction(ByVal ch As String) As String
    ' ajouter Option Compare Text en tête du module
    Dim fonct, abrev, i As Long
    If ch <> "" Then
        fonct = Array("Secrétaire", "Assistante", "Permanente", "Collaborateur", "Collègue", "Directeur Général", "Directeur")
        abrev = Array("Secrét", "Assist", "Perma", "Collab", "Colleg", "DG", "DIR")
        For i = 0 To UBound(abrev)
            If InStr(ch, abrev(i)) > 0 Then
                fonction = fonct(i): Exit Function
            End If
        Next i
    End If
End Function
que tu appelles ainsi :
Code:
    Case 1 ' service
        result(lig, p * nbDatasParPers + 5) = fonction(rub) ' attention, le +5 n'existe pas encore !
        ' voir si tu veux modifier la suite qui contient toujours la Fonction
        result(lig, p * nbDatasParPers + 4) = rub
Lis tout, y compris les commentaires dans le code.

Pour les autres cas particuliers il va falloir un peu te lancer et mettre les mains dans le camboui ;)
C'est typiquement le style de demande où il y a 10 nouveaux cas par jour et ce n'est pas vraiment ma tasse de thé. J'évite les demandes qui durent trop longtemps, je n'ai pas les moyens...


EN REVANCHE, le séparateur de PERSONNES est TOUJOURS précédé d'un ESPACE et suivi d'un ESPACE (3 caractères successifs en tout)
C'est ce que j'ai fait. Tout "/" qui n'est pas entre 2 espaces est changé en "-"
Voir fonction normaliseSep()

Le plus important maintenant :
Sinon, concernant le format d'Export (évoqué hier), à partir de FILEMAKER PRO, je peux apparemment avoir :
• valeurs séparées par des tabulations
• valeurs séparées par des virgules
• XML
• DBF
• Classeurs EXCEL
• FILEMAKER PRO
Il faut absolument que tu regardes avec
• valeurs séparées par des virgules
• DBF
Beaucoup plus de champs seront à leur place, les vides étant présents avec "".
Si tu y as accès, ouvre le DBF avec Access. Je ne pourrais pas t'y aider mais d'autres pourront, tu devrais pouvoir exporter vers excel un fichier directement exploitable.
eric
 

didcac

XLDnaute Occasionnel
Bonjour Eric,
Merci beaucoup, j'ai essayé ce week-end de suivre tes informations, et ça a globalement marché. Mais j'ai fait la version basique, car avec l'ajout de la formule nbDatasFixes j'ai eu un bug... (alors que je pensais avoir compris le principe). Je joins le fichier ainsi "corrigé".
NB : En testant par curiosité avec la grande Base de données, j'ai eu le message "Des tel ont été perdus". La Macro peut-elle quantifier ces erreurs (pour savoir si c'est plutôt 27 ou 198 perdus) ?

Concernant le format d'exportation, avec DBF, on me dit tout de suite que beaucoup de données ont été perdues... donc je n'ai pas poursuivi (et ACCESS n'est que pour PC, je crois, pas pour MAC). Et pour les Virgules, cela me semble identique (voire moins bien) : outre un problème de transcodage des lettres accentuées (é è à û etc), toutes les rubriques se retrouvent dans la première cellule avec évidemment les virgules, et les séparations "/" sont pareilles à EXCEL (j'ai voulu le mettre en pièce jointe, mais le format CSV n'est pas autorisé par ce Site Excel-Downloads !!).
De toutes façons, avec les améliorations demandées aujourd'hui, c'est sans doute quasiment fini.


Mais revenons à mes récents changements :

1) la Colonne Fonction étant désormais proprement renseignée, je voudrais affiner la Colonne Service en recopiant les dates qui s'y trouvent souvent (au format soit AnnéeAnnée, soit AnnéeAnnéeAnnéeAnnée) dans 3 nouvelles colonnes (normalement, 2 suffisent peut-être, mais c'est pour ne rien perdre). La première accueillera la plus ancienne des dates présente dans la cellule, la deuxième un peu plus récente, et la troisième la plus proche d'aujourd'hui (donc chronologiquement).
Ensuite, je me dis qu'il serait logique de créer une toute nouvelle colonne SERVICE "épurée" où là, on aurait éliminé toutes les dates et tous les mots-clés du style "Secrét", "DIR", "Collab", etc etc, de manière à ce qu'il reste essentiellement les noms de Services (ou autres approchant).
Merci.


2) Par ailleurs, je me suis aperçu que lorsque les gens n'ont pas de prénom renseigné, c'est le nom de famille qui va dans la colonne du prénom ! S'il faut une astuce pratique pour les différencier, elle existe : les noms sont TOUS exclusivement en majuscules (DUPONT ou MARTIN-LAVAL, par ex). Les prénoms c'est 1 Majuscule et que des minuscules derrière (Laure ou Jean-François ou Mi Sung). Merci de bien vouloir voir ce point. Et il faut aussi indiquer que TOUS les mots en majuscules qui se suivent sont un seul et même nom global (ex : LA BARTHE, EL FEKIR ou DUPONT DE LA MORLAY (qui retournent actuellement LA, EL et DUPONT).
Une deuxième anomalie étrange, c'est que lorsqu'il n'y a pas Mr UNTEL mais "LD CE : 05 66 77 88 99", très bizarrement le numéro de téléphone disparaît complètement... (voir cellule P11 et 29 dans le fichier). Est-ce la présence de ":" (deux points) qui perturbe tout ? Car, j'en ai hélas pas mal sous cette forme...
NB : LD, c'est l'abréviation de ligne directe (toujours sous la forme : LD CE : 01 00 00 00 00).


3) Un autre point concerne les Colonnes (TEXTE) intitulées Obs, notamment celles numérotées de Obs 6 à Obs 62. Les 3 premières de ces cellules sont remplies de données (seulement) en Colonne AG, AI, AK.
C'est je suppose plus simple à retraiter, car il s'agit là juste de splitter, toujours à partir du séparateur " / ", uniquement des dates (suivies d'un texte).

Chacune est ainsi uniformément structurée : au début, il y a toujours une date aux formats :
• 2/6/97 (pour 2 juin 1997)
• 9/01/07 (pour 9 janvier 2007)
• 08/07/17 (pour 8 juillet 2017)
(soit 4, 5 ou 6 chiffres, je ne crois pas qu'il y en ait 8 avec les milliers de 2018, comme dans 12/10/2018)

Et ensuite, c'est du texte (résumé d'entretien téléphonique).
Là, il y a 2 cas :
• Soit ça s'arrête là (une seule conversation dans la cellule).
• Soit on retrouve une autre date isolée par un ESPACE SLASH ESPACE un peu plus loin dans la cellule. Et un nouveau texte derrière. Voire éventuellement une troisième date, etc etc. En moyenne, il n'y a pas plus de 6 conversations échelonnées dans le temps dans une même cellule.

Je suppose qu'il ne devrait pas y avoir de piège. L’unique cas ambigu (que j'ai constaté), c’est si à un moment du compte-rendu j’ai écrit dans le texte par exemple « Mr BIDULE veut un rendez-vous le 6/04/17 » (qui est certes une date mais PAS précédée par ESPACE SLASH ESPACE, et donc à ne pas retraiter en dispatchant dans une nouvelle colonne).
L'objectif est évidemment d'associer une date dans un champ séparé associé au bon entretien avec la personne, du genre :
14/2/17 Mlle MACHIN bla bla bla / 24/3/17 Mr TRUC est d'accord.
Qui doit déboucher sur (exemple fictif) :
Colonne T9 : 14/02/2017 (DATE désormais au format JJ/MM/AAAA)
Colonne U9 : Mlle MACHIN bla bla bla (TEXTE)
Colonne V9 : 24/03/2017 (DATE)
Colonne W9 : Mr TRUC est d'accord (TEXTE)

Eventuellement, j'ai aussi préparé (très loin) les Colonnes adéquates, à partir de AAA4 (DATE suivie de 6 Colonnes TEXTE) qui seront donc partiellement remplies ou pleines voire vides selon les cas), mais tu peux aussi les mettre proches du début comme l'autre fois (vers la cellule Q36, par exemple).


4) Et pour finir, sans doute le plus simple. La Colonne DZ comprend des sports tous écrits entre guillemets. J'aimerais juste que chaque sport présent soit dispatché et recopié dans une colonne individuelle (sans les guillemets). Donc par exemple, pour 3 sports dans une même cellule, 3 colonnes distinctes de réaffectation générées.


Après un TEST rapide en "taille réelle" de la Macro, j'ai remarqué qu'il ne manque plus grand chose (voire rien) pour aboutir définitivement. Ce n'est donc heureusement pas un projet où il y a 10 nouveautés découvertes chaque jour, comme tu le redoutais... Tant mieux !

En espérant que tu pourras parachever ce superbe travail.
Encore sincèrement merci !
 

Pièces jointes

  • Clients fictifs FMP 4 rectifié TEST 2 CORRIGÉ.xlsm
    37.9 KB · Affichages: 7

eriiic

XLDnaute Barbatruc
Bonjour,

ACCESS n'est que pour PC, je crois, pas pour MAC
Excel peut lire les fichiers DBase, il faut tester

j'ai voulu le mettre en pièce jointe, mais le format CSV n'est pas autorisé par ce Site Excel-Downloads
il faut zipper le fichier

Par ailleurs, je me suis aperçu que lorsque les gens n'ont pas de prénom renseigné, c'est le nom de famille qui va dans la colonne du prénom ! S'il faut une astuce pratique pour les différencier, elle existe : les noms sont TOUS exclusivement en majuscules (DUPONT ou MARTIN-LAVAL, par ex). Les prénoms c'est 1 Majuscule et que des minuscules derrière
Bien sûr que c'est possible. C'est du traitement de chaine de base. Pour les bases, les sites de formation VBA ne manques pas. Ce n'est pas le rôle de ces forums que de te former à distance.
C'est ce qu'on te disait on début. Tu vas avoir des des dizaines d'anomalies et de cas particuliers à traiter.
Perso, je ne pourrai pas. Il faut que tu te mettes à apprendre VBA.
Tu essaies, et si tu bloques tu démarres un sujet sur UN ou 2 point uniquement en détaillant bien.
Et tu passes au suivant ensuite.

j'ai eu le message "Des tel ont été perdus". La Macro peut-elle quantifier ces erreurs (pour savoir si c'est plutôt 27 ou 198 perdus) ?
Oui, elle pourrait...
Mais je t'ai mis des constantes !!! Sers-toi en !!!
Tu augmentes le nombre de telmaxi à 10 ou 50 comme tu veux, et tu verras bien combien tu en as au maxi.
Ensuite te rebaisses la valeur au nombre réel qui y'intéresse.

J'ai arrêté de lire la suite, trop long...
Bon courage :)
eric
 

Discussions similaires

Haut Bas