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.
 

eriiic

XLDnaute Barbatruc
Bonjour,

j'ouvrirai ton fichier plus tard. J'espère que tu y as bien mis un exemple de chaque anomalie.

" / " est le séparateur de blocs. S'il y en a dans les textes ça ne peut que poser des problèmes vu qu'il est traité en 1er.
Il faut que tu trouves toutes les règles pour repérer les indésirables, qui seront traités en amont.
Comme : précédé de "HT", ou suivi de "xxx"
Tu devras modifier manuellement ceux auxquels tu ne trouves pas de règle...

Pour tes problèmes de noms il faut des exemples des cas particuliers dans le fichier, avec les explications dessus.
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.
Ca serait encore mieux si tu disais tout dès le début, donc continue de fouiller et de réfléchir.
eric
 

didcac

XLDnaute Occasionnel
Oui, le Problème n°1 est dans la fiche de la Société PROBLEME n°1 (cellule P10) et le Problème n°3 est dans la fiche de la Société PROBLEME n°3 (cellule AG11). Le problème n°2 a été résolu.

Je vais essayer de trouver d'autres situations "déclenchantes" pour le problème n°3, mais ce n'est pas facile à repérer...

D'après ce que j'ai pu observer, il faudrait que tu parviennes à poser comme postulat que les dates servant à la coupure doivent impérativement être précédées par " / " (ESPACE SLASH ESPACE). A partir de là, il ne devrait plus y avoir le moindre souci.
Car j'en ai lu des centaines, et il est assez rare qu'il y ait nécessairement SLASH qui se balade au milieu du texte, et si c'est le cas, c'est toujours dans un cadre différent de ESPACE SLASH ESPACE placé à la gauche immédiate de la date Lambda. Ceci vaut pour toutes les dates dedans, à l'exception évidemment de la toute première qui est accolée au début de la cellule bien sûr.
Dans mon jargon non informatique, ce serait du genre : si, dans la cellule, une séquence de caractères identifiée comme une date, a directement accolé sur sa gauche " / ", alors COUPURE, sinon NE RIEN FAIRE. Ou quelque chose du genre.


Concernant la Colonne S, je n'avais pas vu que sa présentation est un petit peu différente de Colonne P et Q, d'où une affectation moins organisée et pertinente des données.
Il y figure notamment, au préalable, un petit mot du style : out ou out en ou parti ou quitté ou retraité, suivi de l'année en question : (DEUX POINTS), et ensuite soit Mr Alain UNTEL, soit parfois juste UNTEL
Mon idée serait finalement de remplir comme d'habitude Civilité / Prénom / Nom / Service / Fonction et de coller l'année de départ dans HISTOAN4. Le fait que ces gens soient dans les cases ONT QUITTÉ STÉ ne justifie plus de garder les petits mots out, parti, retraité, etc (donc ils peuvent être supprimés). Maintenant s'il est simple de créer une nouvelle colonne "Motif_depart" pour les y mettre, volontiers (ils sont actuellement dans "Prénom").

Dans mon Fichier, on peut prendre l'exemple concret de AYX11 :
retraitée 2019 : Mme Sophie LAD

que j'aimerais ainsi :
Civ Prénom Nom Histo_An4
Mme Sophie LAD 2019
(toutes les autres cases : fonction, service, Histo, etc, sont déjà bonnes)
NB : pour la date, il y a parfois le mois 06/2014, mais le plus souvent juste 2014. On peut privilégier seulement l'année.

Merci.
 

didcac

XLDnaute Occasionnel
Je viens de trouver une autre anomalie récurrente, et je me demande si ce n'est pas finalement la même que la première, mais présentée différemment :
Là, c'est tout bonnement la présence d'un SLASH au milieu du texte (blablabla / blablabla), à l'évidence un oubli de saisie de la date juste après le /.
En conséquence, on peut peut-être imaginer que les éléments E HT / 2 heures (de la phrase énoncée ce matin), soit ici T ESPACE SLASH ESPACE 2 ESPACE est perçu comme également un "encadrement" par seulement du texte (même s'il y figure un chiffre) et déclenche alors la même anomalie. C'est rassurant. Cela veut dire qu'il n'y aurait qu'un seul type d'erreur.
On peut peut-être le retraiter en demandant à ce que toute séquence BLABLA / BLABLA soit (préalablement) convertie en BLABLATEXTE VIRGULE ESPACE BLABLATEXTE ? Et là, ça doit pouvoir passer.
Merci.
 

didcac

XLDnaute Occasionnel
Je pense que ma dernière suggestion est mauvaise. Je viens de sonder la base réelle. Il y a énormément de texte où j'écris (par exemple) : ils seront 4 / chambre, ou 35 € / heure, etc, (et où ces syntaxes plantent, je reconfirme), et il faut absolument garder telles quelles les phrases, évidemment pour ne pas perdre le sens.
Mon idée de ce matin est sans doute plus pertinente, si ça peut être mis en oeuvre en langage informatique. Ou toute autre méthode permettant d'y arriver, évidemment...
 

eriiic

XLDnaute Barbatruc
- Personnes : " / " final supprimé
- RV : si le mot suivant un " / " ne comprend pas 2 "/" (donc une éventuelle date) alors " / " remplacé par " \ ". Devrait traiter la majorité des anos, y compris la dernière.
Si tu veux accepter les dates style 03/2 remplacer: <> 2 par: >= 1 dans
Code:
If Len(tmp) - Len(Replace(tmp, "/", "")) <> 2 Then
de traiteRV()
Ensuite découpe sur " / " comme avant

- noms RV
Ajout de 2 constantes (ne s'usent pas si on s'en sert...) :
Code:
Const exceptNom As String = "RDV,OBS" ' mots en majuscule ne devant pas être considérés comme des noms.
Const nbMots As Long = 4 ' nombre de mots suivant la date où chercher un nom
4 parce que 2 non suffisants : "rapp demain Mlle TRUC"
mais aussi : "reçu email de RIA", pas sûr que ce soit le destinataire. A toi de voir et de régler cette constante.

Tu as les accents à reprendre dans :
Code:
fonct = Array("SecrŽtaire", "Assistante", "Permanente", "Collaborateur", "Collgue", "Directeur GŽnŽral", "Directeur")
abrev = Array("SecrŽt", "Assist", "Perma", "Collab", "Colleg", "DG", "DIR")

Je ne sais pas si c'est moi ou toi mais des RV se sont trouvés collés à partir de W.
Remettre un jeu de données correct pour les tests.
eric
 

Pièces jointes

  • Clients fictifs FMP 4 rectifié TEST 2.7.xlsm
    65.8 KB · Affichages: 17

didcac

XLDnaute Occasionnel
Bonsoir Eric,
Merci, mais je ne peux hélas pas évaluer les amélioration car il y a un bug qui bloque tout dès le départ (j'ai bien sûr parallèlement corrigé les accents des abréviations). La recopie s'arrête juste avant de remplir les Obs.
NB : chez moi, les " / " de fin de cellule ne disparaissent pas. Chez toi oui ??? A moins que ce soit ce blocage initial qui empêche de le faire ?

Donc, en lançant la Macro juste pour vérifier que, en l'état, ça fonctionne, j'ai eu le message suivant :

1588626263603.png



NB : bizarrement, je vois apparaître en cellule AH14 (issu d'une formule : STXT(AG3;161;30)) :

/ 1/02/12 rapp demain Mlle TR
Est-ce normal ?

Concernant la Colonne W, ce n'est pas un retraitement de ta Macro qui aurait disjoncté, c'est moi (comme je l'ai indiqué en fin du message précédent) qui ai renommé "selon ton modèle" les RV des de Obs 1 à Obs 5 (en vue de faire aussi la colonne des Noms à isoler et associer comme tu l'as fait en Obs 6 à Obs 60).

Merci.
 

eriiic

XLDnaute Barbatruc
Je viens de retélécharger ton fichier, c'est lui qui a "Obs 1_RV1_Date" en W.
Pas grave en soi mais corrige qu'on ait un jeu de données correct.

Perso je n'ai pas d'erreur donc redépose ton fichier qui en fait.
Avec :
VB:
        For lig = 2 To UBound(datas)
            ' 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)
oui je suis sûr que les caractères sautent.
Je ne l'ai fais que sur traiteP. Tu l'as constaté sur d'autres types de colonne ?
eric
 

didcac

XLDnaute Occasionnel
Bonjour Eric,
Voici le fichier 2.7 en PJ qui génère, dès le premier lancement de la Macro, le bug.
En réalité, comme déjà précisé, je suis toujours systématiquement obligé de corriger auparavant la fameuse deuxième parenthèse de fermeture de "Secrét, DG, etc etc) en en supprimant une des deux. C'est donc bien le cas ici.
Et après la Macro est normalement lançable (du moins avec la 2.6, mais avec des Cellules "sans difficultés").
D'ailleurs, il est à noter que si je mets les valeurs de 2.6 (qui marchait) dans 2.7, seule 2.7 plante... (et aucune Obs copiées en BUA) !

J'ai eu l'idée de t'envoyer ici deux fois le même fichier (structurellement identiques, avec aussi la Colonne W>AF modifiées par Copier-Coller) :

1) 2.7 (Macro lancée / plantée) : en conséquence, BUA etc ont disparu

2) 2.7 (Macro PAS lancée) : en conséquence BUA etc, que tu as toi-même générées, présentes.


NB : Ce que tu écris en "encadré VB" (je ne sais pas comment tu fais pour mettre des petits bouts de conversations, pour s'y référer... ce qui est bien pratique), est bien identique à ce que j'ai dans la Macro, avec donc l'absence de la lettre é accentuée qui est remplacée par UNDERSCORE.


Je vais ici affiner certains points (susceptibles peut-être de nous aider à comprendre) :

- Personnes : " / " final supprimé
1) Veux-tu dire qu'une fois la Macro lancée, les " / " de fin de cellule sont totalement supprimés de la cellule colonne P ? Dans ce cas, ce n'est pas le résultat chez moi !
2) ou bien que la Macro affecte bien le (dernier) texte à dispatcher sans qu'il y ait le " / " de fin perturbateur, mais que le " / " final demeure cependant en colonne P ?
NB : cela semble cependant fonctionner, Macro lancée), avec l'absence de " / " dans la cellule destinataire, et surtout, l'absence de blocage à ce niveau (qui se produisait auparavant). Si je peux dire cela, c'est que la Macro 2.7 bloque peu après cette opération (mais qu'elle arrive quand même à exécuter). Cela plante aux RV.


- RV : si le mot suivant un " / " ne comprend pas 2 "/" (donc une éventuelle date) alors " / " remplacé par " \ ". Devrait traiter la majorité des anos, y compris la dernière.
Si tu veux accepter les dates style 03/2 remplacer: <> 2 par: >= 1 dans
Code:Copier dans le presse-papier
If Len(tmp) - Len(Replace(tmp, "/", "")) <> 2 Then
de traiteRV()
Ensuite découpe sur " / " comme avant
Là tu veux dire :
1) accepter le fait que 03/2 coupe la cellule en générant une nouvelle colonne ?
2) ou bien accepter que 03/2 puisse rester ainsi dans la cellule, car cela fait partie de la conversation que d'écrire de rappeler mon interlocuteur le 03/2 ? Car c'est cela à l'évidence que je veux, mais je pense avoir bien vu dans les cellules remplies que c'est en principe traité ainsi.


- noms RV
Ajout de 2 constantes (ne s'usent pas si on s'en sert...) :
Code:Copier dans le presse-papier
Const exceptNom As String = "RDV,OBS" ' mots en majuscule ne devant pas être considérés comme des noms.
Const nbMots As Long = 4 ' nombre de mots suivant la date où chercher un nom
4 parce que 2 non suffisants : "rapp demain Mlle TRUC"
mais aussi : "reçu email de RIA", pas sûr que ce soit le destinataire. A toi de voir et de régler cette constante.
OK.
Là, dans la base réelle, c'est à 99 % un début, juste après la date, par "eu BIDULE ou eue MACHINE", donc aucun souci (c'est bien la personne directement concernée qui ressortira).
J'ai juste remarqué qu'il y avait souvent une virgule collée après le nom (comme si ça faisait partie du NOMDEFAMILLE). Pourras-tu l'enlever, je te prie ?


Tu as les accents à reprendre dans :
Code:Copier dans le presse-papier
fonct = Array("SecrŽtaire", "Assistante", "Permanente", "Collaborateur", "Collgue", "Directeur GŽnŽral", "Directeur")
abrev = Array("SecrŽt", "Assist", "Perma", "Collab", "Colleg", "DG", "DIR")
OK.
C'est fait. Juste pour te dire, le caractère Turc que tu as toi (pour le é) est chez moi UNDERSCORE...


Je ne sais pas si c'est moi ou toi mais des RV se sont trouvés collés à partir de W.
J'ai tout simplement remis, par simple Copier-Coller, les Intitulés initiaux (les Valeurs des cellules de la colonne n'avaient pas du tout changé).

NB : Le fait que le Debogueur évoque au STABILO jaune la commande :
tmp = decoupDate(RV(p))
n'est pas une piste de réflexion ?

Merci bien !
 

Pièces jointes

  • Clients fictifs FMP 4 rectifié TEST 2.7 (Macro lancée : plantée).xlsm
    70.9 KB · Affichages: 1
  • Clients fictifs FMP 4 rectifié TEST 2.7 (Macro PAS lancée).xlsm
    61.1 KB · Affichages: 2

eriiic

XLDnaute Barbatruc
Bonjour,

Ce que tu écris en "encadré VB" (je ne sais pas comment tu fais
Tu as une barre d'outil en haut quand tu rédiges un post.
Pour citer : tu déroules '...' et tu choisis
Pour un code : '</>' et le coller dans la nouvelle fenêtre

En réalité, comme déjà précisé, je suis toujours systématiquement obligé de corriger auparavant la fameuse deuxième parenthèse de fermeture de "Secrét, DG, etc etc) en en supprimant une des deux
Ca je ne peux rien y faire, et moi aussi ça me les casse de devoir corriger les accents où c'est nécessaire à chaque fois.
Si tu pouvais travailler sur un PC le temps des tests ça arrangerait tout le monde.

- Personnes :
" / " final supprimé en mémoire, tes données sur feuilles restent inchangées.
En général contente-toi de tester si le pb est résolu.
Des fois je met des explications sur le traitement appliqué. Si tu ne suis pas tu laisses tomber, c'est tout.

- RV :
Là tu veux dire
Je pensais que Si tu veux accepter les dates style 03/2 était clair.
Je n'accepte que les dates jj/mm/aa. Si tu veux accepter les dates jj/mm comme valides et les ressortir il faut que tu modifies le code comme indiqué. A priori c'est non, donc tu ne touches à rien.

J'ai juste remarqué qu'il y avait souvent une virgule collée après le nom Il me semblait l'avoir fait, je regarderai
Corrigé. En fait c'est cet ajout qui plantait dans certaines conditions
J'ai pu avoir l'erreur sur ton fichier (à mettre systématiquement si tu signales une anomalie)
eric
 

Pièces jointes

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

didcac

XLDnaute Occasionnel
Bonjour Eric,
J'ai pris du temps pour tester tout cela, mais à l'évidence la Macro a été parfaitement corrigée, un très grand merci !

J'ai eu au tout début un soulagement en la lançant avec une dizaine de fiches réelles ne rencontrant aucun problème. Mais, en en refaisant une vingtaine, j'ai eu un premier message d'erreur...
En fait, puisque j'ai pu analyser tout cela, il y a en effet 2 ou 3 situations où ça plante, mais c'est évidemment dû à des saisies incorrectes, au départ. J'ai pu en amont corriger une bonne partie dans la Base elle-même, mais c'est extrêmement fastidieux car il faut arriver à repérer où ça se trouve... Même si le débogueur donne une piste selon le message (dans traiteP ou traiteRV).
Mais je dois souvent faire du tâtonnement.

Là, je suis arrivé à environ 2.000 fiches bonnes, ce qui est la moitié. Je ne sais pas si les dernières fiches seront plus problématiques ou pas, mais je continue vaillamment !

Pendant que je poursuis ce testing, peux-tu je te prie essayer de voir les deux derniers points évoqués l'autre jour :

1) Il s'agit de la récupération du NOMDEFAMILLE à partir de Obs 1 jusqu'à Obs 5 (puisque tu l'as fait avec succès de Obs 6 à Obs 60). C'est pour cela que j'avais renommé les colonnes W etc, pour suivre le même libellé que toi). La différence ici, c'est que la Date (dénommée Appel 1, 2, 3, 4, 5, mais à modifier éventuellement) existe déjà séparément, et qu'il n'y a donc que le NOMDEFAMILLE à recopier (donc pas de date à extraire).

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.

Merci bien ! On touche au but !
 

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.
 

Pièces jointes

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

eriiic

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
 

Pièces jointes

  • Accents en majuscule.xlsm
    20.4 KB · Affichages: 2

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.
 

Pièces jointes

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

eriiic

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
 

Pièces jointes

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

Discussions similaires

Haut Bas