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 comprends très bien ce que tu me dis.
Si j'ai écrit si longuement des choses toutes simples (en comparaison de ce que tu as déjà pu être capable de faire), c'est juste que la forme écrite est souvent imprécise par rapport à la parole (qui, elle, permet de corriger ou repréciser en direct).

J'ai donc regardé tout l'après-midi des sites expliquant le VBA, mais c'est plus que du chinois pour moi. En fait, je pars de zéro, je ne connais rien. Tu es sans doute dans la sphère informatique, moi pas du tout, c'est pour cela que cela te paraît naturel.

Je ne demande pas du tout une formation à distance, mais juste des petites corrections de ton propre travail "existant", car on est vraiment proche du but.
Peux-tu éventuellement tenter de rectifier les (rares) bizarreries qui posent problème ? (fichier joint)
Comme c'est toi qui a écrit les formules, tu vas forcément voir aisément se trouve l'erreur.
(NB : en mettant à 8 les téléphones, il n'y a plus le message d'erreur de perte !)

Donc pour mémoire, il s'agit donc de :

• le nom de famille affecté dans la case prénom, si le prénom n'existe pas + le morcellement des noms composés (DE LA MORNAY devient juste "DE") + la disparition surprenante des numéros de téléphone apparemment quand il y a les deux points des mots ou " : " ??? Mystère total (voir Cellule P11, et en Q29 le mauvais résultat).
• la recopie des dates déjà présentes dans la cellule SERVICE dispatchées dans 3 colonnes (maximum)

Ensuite, c'est vrai, c'est un nouveau (et dernier) retraitement de données (mais bien plus simple que précédemment, pour celui qui s'y connaît) :
• le split par " / " de cellules TEXTE où figurent des dates puis du texte (il n'y a qu'à dispatcher pour isoler la date du texte)
Il suffit de regarder la cellule AG5 pour comprendre le principe.
Pour résumer, voici son contenu (4 conversations) :

19/03/03 Mr MACHIN veut être rappelé, car aura une réunion sur ce sujet le 26/3/03 / 7/04/08 il ne sera pas là pendant un mois / 11/07/10 il a quitté la société / 1/02/12 rapp demain Mlle TRUC

Là il y a quatre dates à splitter (mais le maxi est je crois six ou sept), et seule la date du 26/3/03 ne doit pas être affectée par la formule Macro (car elle fait juste partie du dialogue rapporté)
NB : On remarque que la première date est toujours saisie directement sans espace avant, et qu'ensuite le dénominateur commun est toujours une séquence ESPACE SLASH ESPACE pour passer à la date suivante d'appel téléphonique.

Je suis parfaitement conscient que tu as bien aimablement passé du temps, ce dont je te remercie vivement une fois de plus, mais le fait de me lancer à apprendre le VBA au point d'être capable de l'adapter à mes propres besoins, c'est illusoire. Il y a 85 à 90 % du travail de fait, et les 10 % restant sont juste inatteignables pour moi, hélas. Ce n'est pas un manque de volonté de ma part, c'est simplement du réalisme.

Encore une fois, ce sont les derniers points à régler. Et ensuite, je ne te demanderai plus rien.
Mais tu es mon unique espoir.

A toi de voir, désormais.
Bien cordialement.
 

Pièces jointes

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

eriiic

XLDnaute Barbatruc
Bonjour,

Tu dis avoir essayé, je te crois.
En plus tu essaies d'être clair et détaillé dans ton besoin, je peux donc difficilement refuser.
Peut-être pas demain, peut-être pas tout selon les obstacles, mais j'essaie que ce soit fini au plus vite dans la semaine.
Un point à préciser pour diminuer les tests : est-ce la présence d'un nom (avec ou sans prénom) implique systématiquement la présence de la civilité (Mme, etc) et réciproquement ? (oui/non)

la disparition surprenante des numéros de téléphone apparemment quand il y a les deux points des mots ou " : "
Rien de surprenant. On est sensé recevoir civ nom prénom (service) tel
Les ( ) permettent de couper en 3. Pas de bras, pas de chocolat, pas de service, pas de tel non plus...
Remplace tes ":" par (toto) et tout retombe d'équerre.
Mr LD, CE de son prénom, a un tel. Tout va bien (si on veut)
Là c'est ":", mais 50 lignes plus loin ça sera autre chose ou même rien. Impossible de tout prévoir. C'est pour ça que je te disais que c'était sans fin ces trucs là...

N'ayant pas trop envie de tout relire, tu as donc 2 types de colonnes :
- personnes
- RV
Veux-tu que j'ajoute des paramètres pour pouvoir choisir type traitement, source, destination ?
Ca te ferait compléter un sub comme ça :
VB:
Sub traiter()
    'traitement source, destination (colonne)
    traiteP "P", "EA"
    traiteRV "AG", "AAB"
End Sub
eric
 

eriiic

XLDnaute Barbatruc
Bonjour,

bon, pas de réponse, j'ai fait à mon idée.

Les constantes sont remontées en tête de module. Il y en a de nouvelles à contrôler.
Maintenant il faut lancer traiter()
Tu dois y compléter les colonnes à traiter. Choisir traiterP() ou traiterRV() selon le type de données.
Les titres sont mis automatiquement, ainsi que la position des colonnes résultat selon la largeur des résultats précédents.
Une colonne doit avoir des résultats pour être titrée. Donc là il y a plein de vides, c'est normal.
Seule la 1ère colonne de sortie doit être indiquée dans les constantes (Const cel1Resultat).
Je nettoie toutes les colonnes résultats en début de proc. Si tu dois enrichir, ne le faire qu'après avoir tout sorti et ne plus lancer traiter()

Ano signalées traitées.
En fin de macro tu as l'infos des pertes éventuelles (ou surdimensionnements) pour ajuster les constantes.
eric
 

Pièces jointes

  • Clients fictifs FMP 4 rectifié TEST 2.2.xlsm
    43.5 KB · Affichages: 5

didcac

XLDnaute Occasionnel
Bonjour Eric,
Je viens de voir seulement il y a 30 minutes ton message !! Merci beaucoup. J'étais sur la page depuis des heures, et je n'avais pas rafraîchi !
Si tu n'as pas eu des nouvelles rapides, c'est que j'ai voulu vérifier hier et ce matin diverses choses sur la base réelle, et puis réfléchir aux moyens de trouver les solutions...
Aussi, je t'ai écrit un document très développé qui maintenant est totalement caduc, car après avoir regardé ton travail refait ce jour, j'ai pu constater que les choses étaient désormais parfaitement fonctionnelles. Superbe boulot !! Bravo !!
Comme je l'avais dit au début, je vais faire le même traitement en Colonne Q et Colonne S que en Colonne P. Peux-tu je te prie rajouter ces requêtes traiteQ et traiteS strictement identiques dans la Macro ?
La première colonne d'affectation de Q pourrait être ZA (au hasard).
La première colonne d'affectation de S pourrait être CAA (au hasard).
Merci.

(NB : j'ai corrigé une erreur de formule pour la liste des Secrétaire, Directeur, etc, il y avait 2 parenthèses de fermeture au lieu d'une. Tu devrais avoir la même erreur, je suppose. Je te le dis au cas où, car j'avais reçu un message d'alerte).


Concernant deux derniers points déjà évoqués précédemment, peux-tu je te prie parachever cela ?

1) Il s'agit juste de copier les dates actuellement parfois présentes dans "SERVICE" dans 3 colonnes insérées après "FONCTION" (recopie dans leur ordre d'apparition qui est en principe chronologique, à moins que tu puisses garantir cette chronologie par une formule spéciale ?)
En clair, quand il y a (exemple concret) :
en Cellule P2 : Mme Corinne RENO etc... Assist CE 2004, a orga Sfa 2005, quitté en 2010 (je viens de saisir ces données pour l'exemple)
Je souhaiterais voir dans :
ED2 : le contenu normal, généré par la Macro (restant donc tel quel)
EF2 : 2004
EG2 : 2005
EH2 : 2010



2) Enfin, concernant la colonne DZ (contenant des hobbies/sports) déjà évoquée précédemment, il suffit de copier sur 3 colonnes (par exemple en YA, YB et YC uniquement les mots écrits "entre guillemets".
Ainsi, cas concret, je souhaite obtenir, à partir de DZ5 :
dans YA5 : Tennis
dans YB5 : Golf
dans YC5 : Rugby
(donc copiés sans les guillemets)

Je te joins le fichier légèrement mis à jour.

Grâce à ces dernières améliorations, je pense avoir 90 à 95 % de choses bonnes ou acceptables. Je me débrouillerai alors pour corriger les anomalies restant "manuellement".

Merci beaucoup !
 

Pièces jointes

  • Clients fictifs FMP 4 rectifié TEST 2.2.xlsm
    42.5 KB · Affichages: 5

eriiic

XLDnaute Barbatruc
Comme je l'avais dit au début, je vais faire le même traitement en Colonne Q et Colonne S que en Colonne P
ça me laisse l'impression que tu n'as pas encore lu les explications, ni été voir la proc traiter()

En clair, quand il y a (exemple concret) :
en Cellule P2 : Mme Corinne RENO etc... Assist CE 2004, a orga Sfa 2005, quitté en 2010
ne prendre que les nombres à 4 chiffres commençant par 19.. et 20.. ?
Ou également ceux de 2 chiffres en ajoutant 19 ou 20 devant (voir 99) ? Mais risque d'ajout d'années erronées
 
Dernière édition:

didcac

XLDnaute Occasionnel
1) Mais si, je l'ai lu et fait tout à l'heure, mais mon rajout a été "en vert", et donc inopérant.
Mais là, j'ai compris et c'est en noir, sauf que l'on me dit en alerte "Sub ou Function pas définis".
Il y a :
traiteP "P"
traiteRV "AG"
traiteRV "AI"
traiteQ "Q"
traiteS "S"

'

Pour commencer avec Q, puis-je sélectionner avec la souris toutes les lignes de traiteP, puis les coller à la fin de la Macro et à partir de là corriger les valeurs spécifiques à la colonne Q (pour que ce soit opérationnel ensuite) ? Est-ce ainsi qu'il faut procéder ?
De surcroît, y a-t-il une "Function" à copier également à la fin (de la même façon que je viens de décrire) ? Laquelle ?


2) Oui, également ceux à 2 chiffres, à convertir ensuite en 4 chiffres. Comme la plus vieille année est 1990, il ne devrait pas y avoir d'erreurs, en principe (ce n'est pas comme si il y avait 1913, écrit 13, et qui créerait une confusion avec 2013).

Merci.
 

eriiic

XLDnaute Barbatruc
Une ' met en commentaire tout ce qui suit.
Si une ligne commence par ', elle est inhibée

Ce qu'il faut comprendre c'est que tu as à ta disposition un certain nombre de procédures spécialisées dans un certain type de colonne source.
traiteP : traite les colonnes de type Personnes comme P, (et Q , S ?)
traiteRV : celles de type Rendez-Vous comme AG, AI
Ces proc attendent en paramètre la colonne à traiter. Tu peux donc les appeler plusieurs fois en changeant le paramètre "colonne" que tu lui passes.

Si Q est sur le modèle de P tu dois ajouter une ligne :
traiteP "Q" ' colonne de type Personnes
L'ordre de restitution des champs générés par ces colonnes est celui de déclaration de ces proc traiteXx
Là par exemple j'ai créé une autre proc traiteHo pour les colonnes type Hobbies. Si tu veux ses résultats juste avant les RV il faudra l'insérer entre traiteP "P" et traiteRV "AG"
Entiendo ? ;-)
 
Dernière édition:

eriiic

XLDnaute Barbatruc
Bonjour,

lire post précédent.

Ajouts 1) et 2) faits
J' ai modifié pour nommer toutes les colonnes, même les vides
A tester et contrôler. Ajouter d'autres poupées dans la 3ème poupée russe commence à devenir scabreux.
eric
 

Pièces jointes

  • Clients fictifs FMP 4 rectifié TEST 2.4.xlsm
    51.8 KB · Affichages: 2

didcac

XLDnaute Occasionnel
Bonjour Eric,
Merci pour les explications apportées hier. Entiendo un poco mejor, ahora...
En fait, un malencontreux hasard m'avait fait croire que le P de traiteP était le nom de la colonne sur laquelle il opérait, dans la mesure où c'était justement la colonne P sur laquelle on travaillait...

Aujourd'hui, une fois de plus, tu m'as devancé. J'étais occupé à tester depuis hier soir et ce matin, et je m'aperçois que tu as corrigé, dans cette dernière version, des petites choses qui manquaient et que j'avais découvert (notamment la taille du traitement global, désormais illimité en nombre de lignes).
Cette version est top. Bravo !

Je viens de la tester, et tout fonctionne quasiment.
Il y a juste des petites choses :

1) Pour finir, j'ai donc créé deux lignes juste après traiteP "P" (voir pièce jointe) :
traiteP "Q"
traiteP "S"
Et là, il n'y a en principe rien d'autre à retoucher en quelque autre endroit de la Macro, si j'ai bien compris. Or, j'ai essayé de remplir la Cellule Q2 (de données Civilité, prénom, etc etc) et lancer la Macro, mais rien ne bouge... (aucune copie dans d'autres colonnes plus loin) et en plus j'ai aussitôt un message d'erreur où on m'oriente vers le deboggeur (voir pièces jointes : ce sont des copies d'écran).
NB : Je voudrais que ces données sont après les colonnes de Stabilo jaune (avant les bleues), et j'ai fait comme tu m'as dit (insertion avant traiteRV "AG").

2) Pour la procédure RV de Obs 6 et Obs 7, cela marche parfaitement. Or, pour Obs 8 (valeur en AK3 pourtant bien présente) et Obs suivants (j'ai testé), cela ne marche plus (aucune donnée copiée...). Or, c'est censé rapatrier des données jusqu'à Obs 62 !

Merci de voir ces deux derniers points.
Cordialement
 

Pièces jointes

  • Capture d’écran 2020-05-01 à 14.38.27.png
    Capture d’écran 2020-05-01 à 14.38.27.png
    69.4 KB · Affichages: 11
  • Capture d’écran 2020-05-01 à 14.39.38.jpg
    Capture d’écran 2020-05-01 à 14.39.38.jpg
    388.5 KB · Affichages: 10
  • Capture d’écran 2020-05-01 à 14.41.19.jpg
    Capture d’écran 2020-05-01 à 14.41.19.jpg
    396.8 KB · Affichages: 9

eriiic

XLDnaute Barbatruc
1) Pour finir, j'ai donc créé deux lignes juste après traiteP "P" (voir pièce jointe) :
traiteP "Q"
traiteP "S"
Et là, il n'y a en principe rien d'autre à retoucher en quelque autre endroit de la Macro, si j'ai bien compris.
tout à fait

Or, j'ai essayé de remplir la Cellule Q2 (de données Civilité, prénom, etc etc) et lancer la Macro, mais rien ne bouge...
Testé, c'est ok chez moi.
Comme j’inclue le titre de la colonne d'origine dans le titre créé, sélectionne la ligne 1 et recherche "Secrét" ou "Ont quitté Sté", tu devrais les trouver (à l'accent prêt car ton Mac met le bazar dans les fichiers que tu me renvoies. Je ne sais pas dans quel état tu récupères les accents, je corrige que ceux qui me sont nécessaire dans le code).

et en plus j'ai aussitôt un message d'erreur où on m'oriente vers le deboggeur (voir pièces jointes : ce sont des copies d'écran).
copie d'écran illisibles, fournir un fichier anonymisé produisant cette erreur.
Comme tu peux voir dans le fichier joint, moi je n'ai pas d'erreur et les champs sont bien créés.

2) Pour la procédure RV de Obs 6 et Obs 7, cela marche parfaitement. Or, pour Obs 8 (valeur en AK3 pourtant bien présente) et Obs suivants (j'ai testé), cela ne marche plus (aucune donnée copiée...). Or, c'est censé rapatrier des données jusqu'à Obs 62
C'est sensé.... si tu lui dis. Excel ne fonctionne pas encore par le pouvoir de la pensée.
Si je met :
traiteRV "AG" ' col type RV
traiteRV "AI"
traiteRV "AK"
j'ai bien mes 3*8*2 (=48) champs. De Obs 6_RV1_Date à Obs 8_RV8_Objet
(à partir de BUA1 dans le fichier joint)

Pour te faciliter l'enrichissement du code je viens d'ajouter une syntaxe à traiteRV.
Tu peux saisir une plage. Tous les titres commençant par Obs dans cette plage seront traités en RV.
mes 3 lignes de l'exemple précédent peuvent donc s'écrire :
traiteRV "AG:AK" ' col type RV
eric
 

Pièces jointes

  • Clients fictifs FMP 4 rectifié TEST 2.5.xlsm
    64.5 KB · Affichages: 2

didcac

XLDnaute Occasionnel
Ma-gni-fi-que !!!
Tout a l'air de bien fonctionner, à l'exception hélas du code simplifié traiteRV.
Sur la base de ce que tu as fait, c'est bon (traiteRV "AG:AK").
Mais dès que je le fais évoluer (grand élargissement de la plage), un message d'erreur apparaît.
J'ai mis traiteRV "AG:DY" et là ça bugue. Après un gros long test, cela marche jusqu'à "AG:AN", et à partir de "AG:AP" et au-delà ça plante. Pourquoi donc ??

Je suis dirigé vers :

MsgBox "Erreur, continuer en pas ö pas avec F8 pour analyse" & vbLf & _
"Retour sur la ligne en erreur avec des F8": Stop: Resume
End Sub




Sinon, pour mes copies d'écran illisibles de tout à l'heure, voici le texte du problème qui ressortait :

1588348889629.png


Et ce qui a précédé et déclenché ça était une erreur d'exécution "13" :
Incompatibilité de type

Mais tout est OK, là, aucun blocage (sauf traiteRV).

Concernant les divergences MAC / PC, il persiste bizarrement la double parenthèse pour Secrét, DIR, etc. C'est dingue ! Mais je sais le corriger tout seul (pour une fois).
Alors que dans tes premières versions il n'y avait jamais ce souci présent. Et toi-même, tu n'as aucun message d'alerte, j'imagine. Et si tu regardes ton écriture de formule, il n'y a qu'une seule parenthèse de fermeture sur la droite, non ?
Concernant ta remarque sur les accents, c'est un classique...
D'ailleurs, pour info, ton message de contrôle des pertes, auparavant bien accentué, ressort en max impos_-max fichier (au lieu de max imposé-max fichier).
Je ne sais pas si MICROSOFT essaie de faire converger les 2 versions de la même manière, mais j'avais remarqué il y a deux ans qu'une fonction sur PC n'existait pas sur MAC, ce qui compliquait les choses.
J'ai aussi noté que la touche F8 semble inopérante sur MAC.


Merci.
 

eriiic

XLDnaute Barbatruc
C'était les colonnes vides.
Comme je testais toujours en mettant une donnée pour contrôler je suis passé à coté.

il persiste bizarrement la double parenthèse
J'ai eu un truc bizarre à moment donné sur cette ligne quand j'ai dû corriger les accents.
Mon curseur était à un endroit, mais si je faisais backspace je ne supprimais pas le précédent, mais celui encore avant...
Le module n'a pas dû aimer les aller-retours Mac/PC.
J'ai supprimé le module, enregistré, et recréé le module. On va voir si ce nettoyage suffit.
eric

PS : une petite recherche t'aurait amené ici https://answers.microsoft.com/fr-fr...ouche-f8/3931bd3c-f522-4e19-b01d-280455f12cc4
 

Pièces jointes

  • Clients fictifs FMP 4 rectifié TEST 2.6.xlsm
    35.2 KB · Affichages: 4
Dernière édition:

didcac

XLDnaute Occasionnel
Eric,
Waouhh, super, cette fois c'est bon ! Tout semble a priori marcher. Merci beaucoup.
Je vais pointer longuement tout ça ce week-end, et je te dirai.

Par rapport au fonctionnement propre de cette Macro, puis-je éventuellement insérer par exemple 4 nouvelles colonnes (au niveau de DY), sans que cela ne "perturbe" tout ?
Autrement dit, la Macro, dans ce cas, se met-elle à jour (dans son ensemble) automatiquement ?

Merci de me le préciser.
 

eriiic

XLDnaute Barbatruc
Avant de poser une question pense à regarder en détail les constantes. Je les ai mise pour te faciliter la vie et que tu sois autonome (c'est raté) sur le principal...
En l'occurence la toute 1ère te dit :
VB:
Const cel1Resultat As String = "EA1" ' ******** dŽbut des rŽsultats en EA1 !!! ********
avec des ***** et des !!!! pour bien attirer l'attention (encore raté ;))
Si tu insères des colonnes il faudra décaler cette cellule.
eric
 
Dernière édition:

didcac

XLDnaute Occasionnel
Bonjour Eric,
Oui, je sais bien, et merci d'avoir indiqué des précisions de ce type, mais comme il y a pas mal de lignes de commande qui interagissent les unes avec les autres, sans que je puisse percevoir les conséquences, je préférais poser la question.
Donc, le cas échéant, pour 4 colonnes je devrais remplacer (seulement à l'endroit que tu montres, au tout début des constantes) EA1 par EE1.

Mais finalement, j'ai préféré commencer à tester tel quel (sans insérer de colonnes), avec la Base RÉELLE...

Et là, à mon grand étonnement (et bien sûr déception), j'ai eu droit à un message d'erreur (me conduisant au débogueur).
J'ai alors retesté en ne mettant que 4 lignes au hasard (au lieu de 4.000 !), et c'est pareil !! J'ai fait énormément de simulations pour cerner le problème.

J'ai eu l'idée de tester chaque ligne individuellement (en virant les 4 pour n'en coller qu'une seule à chaque fois et tester). Et là, j'ai eu bien des surprises :

Tout d'abord, re-message d'erreur identique. Et voici ce vers quoi ce message me redirige (copie partielle dans le débogueur en utilisant le Menu déroulant "Débogage" car la touche F8 ne marche apparemment pas sur MAC) :

J'ai donc obtenu :

1588510492403.png


Puis, pour la deuxième fiche, même souci, sauf que cette fois, l'anomalie indiquée dans le débogueur est différente (au niveau de traiteRV) !
Et pour la troisième fiche, encore cette même ligne surlignée en jaune (dans traiteRV).

1588510322269.png


Par contre, pour la quatrième fiche, bizarrement mais tant mieux, je n'ai eu aucun problème !!!!!

Du coup, cela m'a étonné, ces divergences, et j'en ai conclu qu'il n'y avait pas de systématisme, et que c'était des erreurs ponctuelles sans doute liées à l'interprétation des caractères de typographie présents (notamment "/").

Aussi, j'ai passé une vingtaine d'heures à faire de très nombreux tests, et j'en suis arrivé aux conclusions suivantes :

• Pour le problème n°1, le problème est dû à la présence à la toute fin de la cellule du signe Slash (écrit précisément ESPACE SLASH ESPACE). Là, il faudrait une procédure qui efface toute séquence " / ", au cas où une se présente, de la toute fin de Cellule (soit la dernière "conversation"). Cette fois, je ne peux pas agir directement, et les quantités sont probablement très importantes en comparaison.

• Pour le problème n°2, le problème est exclusivement dû à l'absence (exceptionnelle) d'une date au tout début du texte de la cellule. Cela doit créer un conflit.
J'ai pointé les fiches, et les ai complétées pour que ce blocage cesse. C'est matériellement fait (il y en avait à peine 20 sur sans doute 100.000 cellules). Il ne devrait donc plus y a voir de souci avec ça. On peut considérer que c'est arrangé.

• Pour le problème n°3 : c'est ici je pense une mauvaise "interprétation" par la Macro du signe SLASH présent dans la séquence TEXTE. L'anomalie que j'ai rencontrée vient, à titre d'exemple concret, de la syntaxe suivante, dans une cellule Obs :
• 12/04/15 eue DUMONT, va demander si le comité accepte de payer 70 E HT / 2 heures supplémentaires
Normalement, la position de " / " entre HT et 2 heures ne ressemble en rien à une date, et ne devrait donc pas occasionner une ambiguïté, ni générer un blocage. Et quand je remplace le / par pour 2 heures, tout fonctionne parfaitement ! C'est comme ça que je m'en suis aperçu, empiriquement.

Je pense que ce sont les seuls cas occasionnant un bug. Seuls les problèmes 1 et 3 demeurent donc.
Merci d'avoir l'amabilité de voir ce que tu peux faire. Peut-être qu'un argument supplémentaire, affiné, peut faire disparaître ces comportements erratiques.

NB : Pour te faciliter ton testing, j'ai créé dans le Fichier 2.6 (BIS) ci-joint (que tu pourras renommer 2.7), deux nouvelles fiches de Sociétés ayant chacune un des deux problèmes précités :
• Société PROBLÈME n°1 (ligne 10) : la Cellule est P10 (" / " après le dernier téléphone)
• Société PROBLÈME n°3 (ligne 11) : la Cellule est AG11 (phrase particulière incluant SLASH)


1) Sinon, en conséquence directe du premier traitement global que j'ai pu faire (seulement des Colonnes A à S, sur un panel très partiel), pour voir ce que cela "donnait" à peu près en termes de rendu, il y a une chose qu'il serait bien de rectifier seulement dans les données issues de la Colonne S :
Il y a actuellement (après traitement de la Macro) un texte peu exploitable :
Année ESPACE DEUX POINTS ESPACE NOMDEFAMILLE (autrement dit 2011 : BIDULE)
Ce serait bien de pouvoir obtenir :
• premièrement, dans la colonne intitulée "Ont quitté Sté1_Nom uniquement le nom de famille (en éliminant l'année)
• deuxièmement, dans la colonne intitulée Ont quitté Sté1_HistoAn4 justement cette année figurant actuellement avec le nom.
(peut-être que cela peut être fait en deux phases successives de calcul, vu que la première fonctionne bien ?)


2) Et la toute dernière chose, puisque le logiciel d'importation future de ces données a besoin de lier un individu à une conversation, serait de créer (dans traiteRV) une Colonne supplémentaire, par exemple Obs1_Nom, qui accueillerait juste le premier Nom de famille qui figure quasi systématiquement au début des Obs (après, généralement, les petits mots : eu TRUC ou eue MACHINE), et ce, de Obs 1 à Obs 60.
NB : Si cela peut servir, concernant Obs 1 à Obs 5, j'ai renommé (dans le Fichier joint) selon ton modèle :
"Appel 1" en Obs1_RV1_Date et "Obs 1" en Obs1_RV1_Objet (sachant que, de Obs 1 à Obs 5, il n'y a toujours qu'une seule date et qu'un seul Objet), et ainsi de suite. Ils sont côte à côte de la Colonne W à la Colonne AF.
D'un point de vue "pratique", si tu peux positionner chaque Nom n après chaque Obs n (en rapport direct), c'est évidemment mieux, mais si tu n'y arrives pas, colle-les tous en vrac vers la fin des Colonnes.

Et là, tout sera finalisé et opérationnel (puisque je n'ai pas besoin d'autres données, hormis cela) !
Crois bien que j'essaie de coopérer du mieux que je peux, à travers cette centaine de Tests, pour tenter d'affiner les causes des derniers problèmes. J'espère que cela pourra t'aider dans l'analyse.

Encore merci pour tout !!!
 

Pièces jointes

  • Clients fictifs FMP 4 rectifié TEST 2.6 (BIS).xlsm
    83.3 KB · Affichages: 4

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 196
Messages
2 086 101
Membres
103 116
dernier inscrit
kutobi87