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 Eric,
Je te remercie, cela fonctionne très bien.
J'ai testé sur la base réelle, et il y a eu peu d'anomalies (quelques saisies imprécises).

1) En revanche, je t'avais indiqué souhaiter garder les mêmes données que pour P et Q, car le protocole de saisie est similaire : Civilité / Prénom / Nom / Service / Fonction / 4 dates / 8 téléphones / 4 emails (le cas échéant).
L'unique nuance, c'est qu'en amont, cela débute par un ou des petits mots avec une date puis DEUX POINTS (et ensuite les données de la personne). Mais après, c'est pareil (Service, Fonction, etc).
Mais en analysant les résultats générés par ta version actuelle, je me suis rendu compte que le fait de ne cibler qu'un seul "petit mot" en amont était problématique car il y a 25 % de cas qui ont plutôt 2, 3 voire 4 "petits mots" (précédant toujours une DATE), et je pense qu'il faudrait rallonger cela jusqu'à sans doute 4.
Actuellement, quand c'est par exemple "est parti" ou "a démissionné", c'est le mot "est" ou "a" qui est le Motif... Mieux vaut avoir plusieurs petits mots pour mieux connaître la situation réelle (en S4, j'ai rajouté des exemples, pour tester).
Et concernant la première DATE apparaissant, dans ce schéma là, elle doit impérativement être placée dans la 4ème case des dates (HistoAn4), quitte à écraser une qui s'y trouverait hypothétiquement suite au process précédent. Merci.

2) Cependant, ta nouvelle écriture (traiteQ) correspond bien à un autre retraitement que je souhaite faire de la Colonne BO (j'ai testé et ça marche, mais comme, pour une fois, le séparateur est ici la VIRGULE et non pas le SLASH, cela ne va pas au bout du process !). Peux-tu voir cela, je te prie (ainsi que les modalités d'affichage des données précisée ci-après) ?
Il s'agit ici de récupérer le lieu et l'année d'une réception de cette façon (saisie assez bien uniformisée dans cette Cellule avec : Intitulé de la réception et son Année (format AA ou AAAA) : suivie du Lieu) :
Cas concret d'une Cellule BO n :
Soirée-Anniversaire 35 Ans 98 : BRASSERIE FLO, Séminaire commercial et marketing 2003 : HÔTEL DU LOUVRE, Arbre de Noël 2014 : THEATRE DE PARIS, Soirée Clients 2016 : LE QUEEN
(pour info et quelques données de Test, il y a un exemple dans le Fichier joint en cellule BO4)
> A dispatcher (pour le 1er exemple de réception) en :
• Nom_event : Soirée-Anniversaire 35 Ans NOM_DE_LA_SOCIÉTÉ_CLIENTE (à récupérer en Colonne A et copier/insérer) 1998
• Lieu_event : BRASSERIE FLO
• Année_event : 01/01/1998
(il y a donc 3 colonnes à générer, pour chaque réception). Le nombre de réceptions peut parfois aller jusqu'à 20 ou 25. Merci.

3) Concernant les accents, je ne connaissais pas les Macros personnalisées, et je ne voyais pas comment les exploiter. Mais là, c'est bon, et c'est très bien ! J'ai copié ma Base à trier dans ta feuille de macro, lancé par clic-droit, puis une fois fait j'ai recopié la Base dans la feuille de départ. Parfait (même si ce n'est peut-être pas très académique) !

4) Enfin, comme tu l'avais vu précédemment, je souhaitais aussi obtenir pour les Obs 1 à 5 la même chose que pour Obs 6 à 60 que tu as parfaitement gérées.
Là, c'est bien plus simple, car il n'y a pas la date à extraire, simplement à recopier le premier NOM dans une nouvelle cellule Obs n_RV1_Nom à insérer entre Obs n_RV1_Date et Obs n_RV1_Objet.
Dans mon fichier initial, la date s'appelle "Appel 1" (en Colonne W) suivi de "Obs 1", et ainsi de suite Appel 2 / Obs 2, etc...

Si tu réussis à mettre en oeuvre ces derniers éléments, ce sera totalement achevé, car j'ai pointé toutes les Cellules d'une fiche-type et plus rien ne manquera désormais. Je relancerai le test général, et tout sera prêt.

Encore merci beaucoup !
 

Pièces jointes

  • Clients fictifs FMP 4 rectifié TEST 2.7 (Macro PAS lancée) 2 BIS (3).xlsm
    82.5 KB · Affichages: 17

eriiic

XLDnaute Barbatruc
Bonjour,

1) En revanche, je t'avais indiqué souhaiter garder les mêmes données que pour P et Q
Ah bon ? Où donc ?
Tu m'as juste dit que ce qui était pour P et Q n'allait pas pour S et que tu voulais ça à la place :
AXG : vide (là je souhaite la civilité)
AXH : quitté (là je souhaite le prénom)
AXI : 2015 : Mlle Line LE QUéRé (là je souhaite le nom)
AXO : vide (là je souhaite la première année indiquée au début, soit ici 2015)
AXP ou AX?? (nouvelle colonne à insérer indiquant le "Motif de départ" (out, parti, licencié, retraité ou autre)).
Ce que j'ai fait

Moi je viens ici pour dépanner sur des questions qui ne doivent pas me prendre plus d'1/4-1/2h, c'est mon choix, j'ai d'autres choses dans la vie.
Là ça fait 3 semaines qu'on y est. Dès le début je t'ai dit que c'était des trucs sans fin. Maintenant c'est bon pour moi, c'est ma dernière intervention.
Les librairies ont rouvert, fonce acheter un livre sur vba avant qu'elles ne referment ;-)

1) J'ai regardé, c'est trop galère à modifier traiteP pour tenir compte de ce cas.
Alors tu coupe ta colonne S en 2 sur ":" avec 'Données / Convertir'.
Tu fais des formules sur la 1ère pour récupérer ta date et ton motif, ce sont des formules basiques (tu décales la 1ère cellule de restitution dans les constantes d'autant de colonnes nécessaires pour avoir la place, et tu mettras au bon endroit à la fin).
Et la 2nde devenue propre tu la traites avec traitesP

2) Je t'ai modifié traiteQ que ça te sorte proprement le résultat.

3) je l'avais déjà intégré dans les macros

4) Stop, j'arrête. Essaie de te débrouiller avec des formules. As-tu une idée du nombre d'heures que j'ai dû passer dessus ? Et de ce que tu aurais dû payer en faisant appel à un prestataire ?
Bon courage
eric
 

Pièces jointes

  • Clients fictifs FMP 4 rectifié TEST 2.7 (Macro PAS lancée) 2 BIS (3).xlsm
    69.5 KB · Affichages: 4

didcac

XLDnaute Occasionnel
Bonjour Eric,
Crois bien que je suis désolé de la tournure des choses, alors qu'on allait arriver, paisiblement, au bout du processus...
Cela n'enlève toutefois rien à ton mérite et à tes compétences, bien entendu, et je te suis une fois de plus tout à fait reconnaissant du travail que tu as fourni. C'est véritablement remarquable, et merci pour ta patience face à mon incompétence, et à tes tentatives didactiques que j'ai toujours du mal à appréhender.

Pour le quiproquo de ma demande pour ONT QUITTÉ STÉ, je t'avais auparavant présenté la chose ainsi, le 7 mai :

=======================================================================
"2) Et pour finir, peux-tu voir le souci d'affectation de quelques valeurs de ONT QUITTÉ STÉ.
Comme je l'avais décrit avant-hier, à cause des petits mots : out, retraité, parti, etc les cases sont remplies bizarrement, avec de surcroît l'année qui vient avec le NOM !
NB : Ces petits mots (qui ont tout décalé) n'existent pas dans P et Q.
Je souhaite donc le même format classique avec Civilité, Prénom, Nom (les valeurs des rubriques qui suivent, Service, Fonction, etc, sont bonnes, elles) et surtout la Date présente affectée dans Ont Quitté Sté_HistoAn4, et les "petits mots" que tu avais réussi à "isoler" dans une case, dans une colonne insérée après et dénommée "Motif".
NB : pour la date, il y a parfois le mois, écrit 06/2014, mais le plus souvent juste 2014. On peut privilégier de mettre seulement l'année."
=========================================================================

en évoquant le fait que les autres rubriques n'avaient pas besoin d'être "retravaillées", elles. C'est simplement ça. Et ensuite, quand je t'ai réécrit, je me suis focalisé sur les modifications à faire de ce qui n'allait pas. J'ai essayé de faire une présentation différente pour peut-être mieux me faire comprendre. Désolé.
Cela n'a pas d'importance, mais je tenais à te dire que je ne t'ai pas mis sur une mauvaise piste. De toutes façons, la formule que tu as faite a fini par servir très utilement !!


Sinon, en ouvrant ta toute dernière version, il y a un bug comme suit :

1589643261156.png


D'ailleurs, est-ce ce blocage qui fait que la Macro n'exploite pas pleinement la case BO en ne retranscrivant pas le nom de la société (issu de la Colonne A) ni la date, après l'intitulé de la réception, comme je l'avais mentionné l'autre jour ?
Et ce, pour arriver, en AXK1, à lire : Soirée annuelle Société PROBLEME n°1 1998
Cette syntaxe complète est vraiment importante à récupérer sous cette forme. Merci de bien vouloir voir cela, je te prie. Je n'y arriverai pas moi-même.

Et le fait qu'il n'y ait, apparemment, plus du tout de retraitement de la Colonne S, également ? Ou c'est un souci ailleurs ?

Merci !
Cordialement.
 

Pièces jointes

  • Clients fictifs FMP 4 rectifié TEST 2.7 (Macro PAS lancée) 2 BIS (3).xlsm
    54.8 KB · Affichages: 4

eriiic

XLDnaute Barbatruc
Bonjour,

ce n'est pas toi, tu as fait ta part de tests. Mais je n'en peux plus de ton fichier.
Plus vraiment envie de passer 2h dessus pour la 8ème fois, pour retrouver où se trouve le 4ème champ du xième bloc de la yième personne à changer de valeur si telle et telle condition sont réunies.
Alors que si tout avait été donné dès le départ cela aurait été intégré facilement.
Mon intention première était de te mettre le pied à l'étrier mais que ce soit toi qui fasse.
Pas moi qui fasse tout...

Pour ce qui est de la constante, c'est toi qui me l'a renvoyée ainsi à cause de ton Mac.
Recherche le post où je t'ai mis cette fonction si tu veux la remettre à l'identique. Ou bien liste les lettres accentuées minuscules que tu veux traiter.

D'ailleurs, est-ce ce blocage qui fait que la Macro n'exploite pas pleinement la case BO en ne retranscrivant pas le nom de la société (issu de la Colonne A) ni la date, après l'intitulé de la réception, comme je l'avais mentionné l'autre jour ?
Je pense plutôt que c'est parce que tu utilises traiteQ pour un usage à laquelle elle n'a pas été prévu.
De mémoire elle était sensée trouver également civilité, nom et prénom, pas une société à laisser telle que.
Modifie traiteQ pour qu'elle n'appelle plus identité() et voit si ça correspond mieux.
(sous toutes réserve, je commence à m'y perdre dans ton truc. Et au bout de 3 semaines...)

Et le fait qu'il n'y ait, apparemment, plus du tout de retraitement de la Colonne S, également ? Ou c'est un souci ailleurs ?
C'est surtout dû au fait qu'il disparu dans le fichier que tu m'as passé au post #46 alors qu'il y était encore dans celui que je t'ai mis au post #45...
Tu mets ce que tu veux, dans l'ordre que tu veux, dans traiter(). Corrige ici.
eric
 
Dernière édition:

didcac

XLDnaute Occasionnel
Bonjour Eric,
OK, pas de problème.

J'ai essayé depuis plusieurs jours de finir le fichier, mais finalement je n'y arrive hélas pas.

En faisant Convertir/données, comme tu m'avais dit, attendu qu'il y a parfois 1 ou 2 ou 3 voire 4 petits mots, ça me décale tout de manière anarchique, et c'est ingérable (par colonne). Il faut certainement utiliser une fonction, mais en utilisant justement tes fonctions de Découpe, en tentant de modifier des bouts de code, ça me plante la Macro sans fin... J'ai relancé une cinquantaine de fois le process, car je ne comprends pas bien ce que je fais, ni où intervenir au sein de l'écriture.

Mais peut-être faut-il aborder les choses différemment, vu le peu qu'il reste à faire, en créant des petites Macros complémentaires qui finissent les 3 traitements restant. C'est soit agréger le contenu de 2 ou 3 cellules, soit copier un NOM DE FAMILLE dans une deuxième cellule ou extraire.
J'ai créé un fichier tout petit montrant les 3 ajustements à faire (fichier joint) avec du texte explicitant.

En français, ou langage non-informatique, cela donne :

1) copier un NOM DE FAMILLE (le premier qui se présente, écrit tout en Majuscules) dans une cellule TEXTE, puis le coller dans une cellule vierge dans la colonne qui suit.
Exemple dans la Cellule A5, le TEXTE :
eu DUPONT à midi pour la réunion
> DUPONT est simplement à copier dans B5

2) Agréger le contenu de 3 cellules dans une 4ème cellule.
Exemple :
A10 : France TELECOM
B10 : 01/01/1998
C10 : Soirée du Personnel
Pour obtenir en D10 :
> Soirée du Personnel France TELECOM 1998 (donc C + A + B)

3) Couper 1 à plusieurs mots (TEXTE et DATE) jusqu'à ": " (DEUX POINTS, plus ESPACE), et coller cela dans une cellule vierge. Puis, extraire " DATE :", et ne coller que la DATE au format AAAA dans la colonne suivante
Exemple dans la cellule A15 :
retraité en 2016 : Mr Luc POL (Secrét CE 2011) 01 41 15 11 11
> "retraité en 2016 : " est à extraire puis copier en C15 (étape intermédiaire éventuelle, suggérée au cas où ça faciliterait les choses ?)
puis :
> " retraité en " est à extraire, et coller dans D15.
> " 2016 : " est à extraire, et seulement "2016" est à coller dans E15.
NB : cela permettra d'utiliser traiteP sur la colonne S (qui fonctionne très bien). Cela veut donc dire que la Macro du 3) devra être "lancée" avant traiteP "S".

J'espère que tu auras un peu de temps pour voir cela. Il est probable que ce soit des écritures assez simples (du moins quand on sait les écrire... !).

Au cas où, je mets aussi en copie le fichier de base du Post #45, modifié en 2 BIS (3) pb (pour problème) en ajoutant le calcul traiteP "S" qui évidemment génère, actuellement, de mauvaises données (du moins mal dispatchées), d'où la nécessité de retraiter S (petit Découpage préalable) juste avant.

Encore merci, si tu peux.
 

Pièces jointes

  • 3 traitements.xlsx
    9.1 KB · Affichages: 2
  • Clients fictifs FMP 4 rectifié TEST 2.7 (Macro PAS lancée) 2 BIS (3) pb.xlsm
    71.2 KB · Affichages: 5

eriiic

XLDnaute Barbatruc
Bonjour,

je crois que tu ne te rends pas très bien compte ce que c'est que de revenir sur un tableau de 2143 colonnes, d'aller en insérer un certain nombre dispersées et d'en modifier d'autres, dispersées également...
Un essai, voir AZK:AZT.
Que ça aille ou pas c'est ma dernière intervention dessus.
eric
 

Pièces jointes

  • Clients fictifs FMP 4 rectifié TEST 2.7 (Macro PAS lancée) 2 BIS (3) pb 1.1.xlsm
    78.8 KB · Affichages: 3

didcac

XLDnaute Occasionnel
Bonjour Eric,
Je te remercie pour ta réponse.
La bonne nouvelle, c'est que la Macro fonctionne très bien pour la première personne d'une cellule. En revanche, à partir de la deuxième et au-delà, ça ne va plus.
Mais en fait, j'ai bien observé :
Au lieu de prendre les données de la deuxième (puis troisième, etc) personne, la Macro réutilise les données de la première à chaque fois (ou du moins les copie). On a donc :
en AZS le bon Motif et en AZT aussi la bonne DateHISTOAN4 de la première personne
mais en BAO le même Motif qu'en AZS et en BAP la même DateHISTOAN4 qu'en AZT. Avec donc aucun rapport avec les données de la deuxième personne. Et ainsi de suite pour toutes les personnes.
A partir de là, je pense que tout le reste se remplit mal (civilité, prénom, etc). Puisque la première personne n'a aucune erreur, et ce sur les 3 première fiches (lignes). Cela doit donc marcher.

NB : Pour le NOM de famille, il persiste parfois une virgule accolée à la fin. Il me semble que tu avais pu l'enlever sur une autre écriture.

Merci. En espérant que mes tests te mettront sur les bons rails (mais je me trompe peut-être).
 

didcac

XLDnaute Occasionnel
Super bien corrigé, cela fonctionne presque parfaitement.

1) Il y a juste qu'il faudrait, en amont, pouvoir convertir la (première) Date (lorsqu'elle est au format AA) au format AAAA, car sinon cela génère des erreurs (voir ligne 4, Jean SARTET en 98).

2) Et, phénomène étrange, lorsque une personne n'a pas d'info complémentaire juste après son nom de famille, la Macro coupe la dernière lettre du Nom et va la coller dans la case téléphone 1. Regarde par exemple Mme LUCHé en ligne 7. Il reste LUCH dans le Nom et "é" dans Tél1 (et je te précise pour avoir testé que ça n'a rien à voir avec le retraitement des accents, car c'est pareil avec n'importe quelle lettre !).

Merci.
 

eriiic

XLDnaute Barbatruc
1) fait
2) mis un patch, mais possible qu'il remette des erreurs dans d'autres cas qui passaient bien (détection des identités incomplètes : civ+prénom+nom)
eric
 

Pièces jointes

  • Clients fictifs FMP 4 rectifié TEST 2.7 (Macro PAS lancée) 2 BIS (3) pb 1.2.xlsm
    73.2 KB · Affichages: 3

didcac

XLDnaute Occasionnel
Eric,
En effet, il y a pas mal de bugs qui m'empêchent de voir le résultat quand j'exécute. Mais avant de lancer la Macro, j'ai pu observer :

1) j'ai une coupure mal positionnée (et la date au format AA) :

n 98a démissionné e


2) Voici le message d'erreur (en rouge) :

Sub traiteP(source As String)
Dim datas, result(), pers, rubrique, rub As String
Dim ident, service, tel, titres, part1 As String, pos As Long
Dim lig As Long, col As Long, p As Long, r As Long, i As Long
Dim nbTel As Long, nbMail As Long
Dim nbPers As Long, tmp ', msg As String, msg1 As String, msg2 As String

titres = Split(titresP, ",")
lig = Cells(Rows.Count, Range(source & "1").Column).End(xlUp).Row
If lig > 1 Then
datas = Range(source & "1").Resize(lig).Value
' pr_parer un tableau de x ligne y colonnes pour recevoir le r_sultat
ReDim result(1 To UBound(datas), 1 To nbMaxPers * nbDatasParPers)

On Error GoTo erreur
For lig = 2 To UBound(datas)
If lig = 7 Then Stop


' d_couper par personne la chaine corrig_e
' s_parateur " / "
If Right(datas(lig, 1), 3) = " / " Then datas(lig, 1) = Left(datas(lig, 1), Len(datas(lig, 1)) - 3)
pers = Split(datas(lig, 1), " / ") ' donne tableau de x personnes
nbPers = Application.Min(UBound(pers) + 1, nbMaxPers)
nbMaxPersReleve = Application.Max(nbMaxPersReleve, nbPers)
nbPersPerdu = nbPersPerdu + UBound(pers) + 1 - nbPers
' pour chaque personne
For p = 0 To Application.Min(UBound(pers), nbMaxPers - 1)••••ˇˇˇˇ
part1 = ""
pos = InStr(pers(p), ":")
If pos > 0 Then
part1 = Application.Trim(Left(pers(p), pos - 1))
If Right(part1, 2) Like "##" Then

pers(p) = Application.Trim(Mid(pers(p), pos + 1))
Else
part1 = ""
End If
End If
nbTel = 0: nbMail = 0

'd_couper par rubrique
If InStr(pers(p), "(") > 0 Then
pers(p) = Replace(Replace(pers(p), "(", "|", , 1), ")", "|", , 1)
Else
For i = 1 To Len(pers(p))
If Mid(pers(p), i, 1) Like "#" Then Exit For

Next i (et là retour à la ligne supérieure, en boucle)
'******* correctif
If i = Len(pers(p)) + 1 Then
pers(p) = pers(p) & "||"
Else
i = Application.Min(i, Len(pers(p)))
pers(p) = Left(pers(p), i - 1) & "||" & Mid(pers(p), i)
End If
End If





Par ailleurs, j'ai testé par curiosité la version précédente (qui est assez proche d'un bon fonctionnement) sur 400 fiches, et curieusement, j'ai eu systématiquement le massage suivant sur la Base réelle (qui a pourtant été testé bonne précédemment) :

1590268244633.png


As-tu une idée de ce dont il peut s'agir ? C'est structurel ? Cela semble concerner le "Motif". C'est pour savoir si ça vient de la Macro, ou si je dois regarder dans mes données.

Merci.
 

eriiic

XLDnaute Barbatruc
Déjà tu peux supprimer If lig = 7 Then Stop , un résidu de test oublié.
Pour le reste aucune idée sans le message d'erreur et le fichier qui va avec.

De toute façon là on a atteint le stade où quand tu demandes de traiter un nouveau cas particulier, on rajoute 3 autres anomalies ailleurs.
Il faudrait que tu fasses un cahier des charges complet et exhaustif comme tu aurais dû faire au début, et tout refaire....
Ca serait sans moi bien entendu.

Donc choisi ta version et traite ce qui reste à la main
eric
 

didcac

XLDnaute Occasionnel
Bonjour Eric,
Super, la suppression du résidu de Test a tout solutionné parfaitement le 2) !!!

Par contre, pour le 1), il doit s'agir d'un décalage dans l'écriture car ça coupe trop tôt et le format reste en AA.

n 98a démissionné e

Sur ton PC, c'est au contraire "bien" coupé ??? (après le dernier petit mot avant les DEUX POINTS précédant une date)

Merci.
 

didcac

XLDnaute Occasionnel
Bonjour Eric,
Magnifique !! Le 1) fonctionne très bien, bravo. Là, je dois avoir 98 ou 99 % des données, c'est réjouissant.

Les derniers process qui me manquent sont ceux décrits l'autre jour dans mon "nouveau" petit fichier dénommé "3 traitements", mais que j'ai rebaptisé ici "2 traitements" (en pièce jointe) puisque tu viens de réussir hier celui de la Colonne S (notamment "Motifs-Années") qui en était un.

Là, ce sont 2 écritures normalement plus basiques, et comme ce sera un traitement que je ferai dans un second temps, je pense préférable de créer une nouvelle Macro à part (pour ne pas alourdir l'autre). Cela pourra aussi me servir également dans le futur pour d'autres choses, avec une structure de base "propre", sans avoir à affronter la compréhension (si l'on peut dire, de ma part...) de milliers de lignes de code (de la grosse Macro).
Car, comme tu en parlais, plus on rajoute de petits bouts par-ci par-là, plus on risque d'engendrer de nouvelles anomalies de l'Ensemble. Au moins, ça n'arrivera pas ! Et c'est tant mieux, car je galère déjà pas mal à refaire le Testing global (sans doute des données mal saisies en amont, je présume). Je me repencherai dessus définitivement, quand tout sera complet, ce qui ne saurait tarder désormais.

Encore merci beaucoup !
 

Pièces jointes

  • 2 traitements.xlsx
    9 KB · Affichages: 2

Discussions similaires

Haut Bas