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

eriiiic

XLDnaute Barbatruc
Bonjour,

et il est où le fichier en situation ?
En précisant quelle cellule donne telle anomalie et le traitement utilisé.
eric
 

didcac

XLDnaute Occasionnel
Bonjour Eric,
Voici le fichier joint.
Les données initiales sont dans la Colonne S des 3 sociétés (habituelles) PROBLEME 1, 3, et 4.
Le résultat-cible est en AXG / AXH / AXI.
En fait, les 3 exemples génèrent une mauvaise affectation des données, car dans le traiteP de base, qui marche parfaitement avec les colonnes P et Q, il faudrait sans doute écrire une petite variante tenant compte des "petits mots" en réaffectant l'ensemble en conséquence.
NB : En outre, je remarque que bizarrement les lignes PROBLEME 3 et PROBLEME 4 semblent se comporter (actuellement) pareil, alors que PROBLEME 1 apparaît différent dans son rendu (alors que les données sont saisies exactement de la même manière, si je lis bien, elles vont dans AXP ou bien AXI !!). Je souligne au passage cette curiosité si ça peut en amont éviter une difficulté.

Prenons un exemple concret dans PROBLEME 4 (la première personne) :
Actuellement, on a (voir fichier) à partir des données de la Colonne S, le comportement suivant :
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)).

Comme on le voit dans l'exemple, suite à mon exportation de fiches, les noms de personnes et de sociétés (intégralement en MAJUSCULES) ont eu le changement du É en é (par exemple Mlle LE QUéRé, au lieu de LE QUÉRÉ). Peut-on créer une Macro qui indiquerait de convertir ces lettres "partout" dans la base, dès lors qu'un "mot" est constitué exclusivement de Majuscules et d'un ou plusieurs "é" accolés (dans sa globalité) ? (afin que cela ne concerne à coup sûr que les NOMS, évidemment).
Ce peut éventuellement être une petite Macro autonome, dissociée de l'autre, d'ailleurs (ce qui me permettrait de la réutiliser si je vois une autre fois une problématique comparable en d'autres circonstances mais dans le même genre de problème).

Merci bien.
 

Fichiers joints

eriiiic

XLDnaute Barbatruc
Bonjour,

Houla, mais ce n'est plus du tout le format attendu et ça demande réflexion.
Ces derniers temps j'ai trop fait d'aides qui m'ont pris plus de temps que prévu, il faut que je fasse un petit break.
En attendant une fonction personnalisée et un Sub pour tes accents.
Ca risque de prendre du temps sur ta grande feuille. Travaille plutôt en sélectionnant qq colonnes avant de passer au paquet suivant.
eric
 

Fichiers joints

didcac

XLDnaute Occasionnel
Bonjour Eric,
Je comprends très bien ce petit break, pas de problème.
De mon côté j'ai continué d'avancer, et j'ai ainsi réussi à tout finir avec les colonnes P et Q. C'est super !!

1) Pour la Colonne S, comme tu as déjà réussi à extraire toutes les données, mais simplement mal dispatchées, je ne pensais pas que cela remettrait structurellement tout en cause. Mais je te laisse voir cela et procéder.

2) Pour la Macro des accents, ce dont je te remercie, il y a donc 2 approches proposées :
a) Tout d'abord, curieusement, en copiant juste la Formule (accentMaj...) bien positionnée dans la grande Feuille, cela ne marche pas. J'ai #NOM? qui apparaît en Q12, (alors que j'ai bien écrit =accentMaj(P12). Et la Cellule du dessous en Q13 n'affiche cette fois rien comme résultat ! Très très bizarre.

Melle Hélène VIé
#NOM?​
Mr TéZé=accentMaj(P13)
NB : dans ta feuille à toi, pourtant, ça marche bien. Or là, c'est une simple fonction, il n'y a pas de Macro qui agisse en plus. Je ne comprends pas.

b) Et pour l'autre méthode, la Sub (à privilégier, car elle permettra de changer les noms également dans les cellules OBS, je présume), comment faire quand tu écris "Copier la Macro etc". Habituellement, quand il y a une Macro dans un classeur, je fais (sur MAC) : Outils / Macros / Macro / là, je sélectionne "Tous les classeurs ou Ce classeur ou Telle feuille" puis Modifier, et là j'accède à VBA et je peux changer des données à l'intérieur, ou copier des formules, etc. Là, cette Macro (je suppose dénommée Accents en majuscules ou du style) n'apparaît nulle part dans la liste du pop-up !
Comment faire alors pour la "copier" (puis coller quelque part) ?
Comme je l'ai finalement vue sur la liste du côté gauche, j'ai fait ainsi (voir ci-dessous, collée dans le gros Fichier renommé TER) mais apparemment ça ne fonctionne pas, aucun é n'est transformé en É après exécution de la Macro (je ne sais pas trop où coller exactement les Function et Option Explicit) :

1589194520997.png


et puis :

1589194599904.png

Je mets le fichier (où même la simple fonction sur feuille ne marche pas) en PJ.
Merci.
 

Fichiers joints

eriiiic

XLDnaute Barbatruc
Bonjour,

2) Pour la Macro des accents
comme expliqué il faut copier les macros dans ton classeur.
La fonction est une fonction personnalisée qui n'existe pas à l'origine.
Il faut copier son code dans un module Standard (Insertion / Module) si tu veux l'utiliser sur feuille.
Utilise la fonction pour un besoin ponctuel dans un fichier où tu ne veux pas mettre le Sub de ThisWorkbook. Tu peux la mettre dans un fichier fonctionsPersonnelles.xlsm que tu enregistres en choisissant le type *.xlam. Partir d'un classeur neuf et n'y mettre que les fonctions personnalisées et en garder les 2 exemplaires : xlsm pour compléter/modifier. Elles seront chargées au démarrage d'excel et disponibles sur tous les classeurs. Chez toi ! Pas chez ceux qui ne l'ont pas. Pour un classeur destiné à être diffusé, soit finir par un copier-coller valeur, soit inclure le code.
Si c'est à faire régulièrement dans un classeur tu peux lui mettre le sub ThisWorbook pour traiter facilement une plage et ne pas à avoir à faire le copier-coller valeur

Et la Cellule du dessous en Q13 n'affiche cette fois rien comme résultat ! Très très bizarre.
Là c'est le B.A.BA, ta cellule est au format Texte.

Ajout de traiteQ
j'ai aussi inséré des lignes de code pour mettre des plans.
Ca permet de déplier/replier des ensembles de colonnes comme il y en a un paquet.
Cliquer sur 1 ou 2 à gauche, ou sur les + pour déplier celles situées à gauche.
eric
 

Fichiers joints

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 !
 

Fichiers joints

eriiiic

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
 

Fichiers joints

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.
 

Fichiers joints

eriiiic

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.
 

Fichiers joints

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.
 

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.
 

eriiiic

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 !
 

Fichiers joints

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas