XL 2016 Transformation d'une table de référence pour concordance.

MCOTTEND

XLDnaute Nouveau
Ma problématique :
Dans mon fichier de départ j'ai les valeurs ci-dessous séparées par une virgule :
. YT,
. Col,
. Mi,
. Sn,
. Sg,
. AFA,
. Un,
. WAD,
. MTM,
. De,
Ma table de référence varie en nombre de lignes.
Toutes ces valeurs sont de longueurs variables et de typologie différentes :
. nombre + lettre,
. Lettre + nombre,
. nombre seul,
.etc.
Mon souhait :
Mettre leurs valeurs dans des colonnes individualisées comme le montre l'exemple à l'aide d'une macro. Et c'est là que je coince complètement, mes connaissance de programmation n'étant pas suffisantes pour mener mon projet à destination.
Est-ce quelqu'un du forum pourrait m'aide ?
Je joins un fichier exemple qui facilitera la compréhension de chacun.

Merci d'avance à toutes et tous.
 

Pièces jointes

  • Fichier_exemple.xlsx
    16.7 KB · Affichages: 28

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir MaPomme

Bravo !!!!
1594932954742.png



@MCOTTEND pourra régler ces affaires en quelques secondes ce weekend et aller à la plage !!!

Bien à toi, à vous
@+Thierry
 

mapomme

XLDnaute Barbatruc
Supporter XLD
C'est marrant le compteur d''affichage des pièces jointes du Forum déconne, je t'assure que j'ai ton classeur ouvert et je regarde ton code mais il affiche toujours :

C'est vieux comme mes robes. J'ai remarqué que ça pouvait (enfin je le crois) dépendre, entre autres, du navigateur. Avec Firefox en mode privé, je ne fais pas tourner les compteurs (ni les guéridons d'ailleurs). Avec un navigateur sans restriction, le compteur s'incrémente. Ça n'a pas grande importance non plus.

nota: l'auteur du fichier peut très bien recharger une version (par exemple avec des fautes d'orthographes corrigées). Dans ce cas le compteur sur XLD est réinitialisé à 0.
 
Dernière édition:

MCOTTEND

XLDnaute Nouveau
Bonjour Michel, le Fil, e Forum



Ouh là, + de 10 000 lignes ... Ca va mettre des plombes ! Dans ce cas le PowerQuery risque d'être mieux adapté !

Bon courage !
@+Thierry


Bonsoir Thierry,
Je viens de tester une première série de fichiers rassemblés dans un seul classeur.
Dans 95% des feuilles, j'ai bien tous les résultats attendus.
Par contre, les onglets en rouge posent problème. J'ai l'impression que si dans la référence, il y a un groupement de lettres repris dans l'entête du tableau résultats, il y a plantage.
Je joins le fichier que j'ai reconstruit avec ses différentes feuilles.
Existe-il une solution pour remédier à cette erreur ?
Merci d'avance.
Bonne soirée.
Michel
 

MCOTTEND

XLDnaute Nouveau
Bonjour @MCOTTEND , @mapomme , le Forum

Euh, Michel, je pense que la version de MaPomme du Post #15 est bien plus optimisé que mon premier essai, surtout pour des grosses quantités. l'as tu essayée ?

Je ne vois pas de fichier joint de ta part non plus....
Bien à toi, à vous
@+Thierry
Bonjour Thierry,
Je vais essayer de tester la proposition de MaPomme ce soir si j'en ai le temps.
Le téléchargement de mon fichier s'était bien réalisé. Est-ce qu'il y a un poids maximum à ne pas dépasser en pièce jointe ?
Cordialement.
Michel
 

MCOTTEND

XLDnaute Nouveau
Re

Oui il y a une limite (je ne sais plus la taille), mais il accepte les ZIP compressés aussi...

@+Thierry


Bonsoir Thierry,
Je remets en pièce jointe mon fichier de travail. (Poids environ 990Ko)
Ce sont les onglets rouges qui posent problèmes.
Je vais essayer le script de MaPomme et reviens sur le forum au plus tôt.
Merci à tous pour votre aid.
Michel
 

Pièces jointes

  • XLD_ MCOTTEND_Fichier_exemple_V03.xlsm
    990.2 KB · Affichages: 2

MCOTTEND

XLDnaute Nouveau
Bonjour à tous,

Une version VBA plutôt rapide (moins de 0,3 s pour 12 259 lignes traitée)
  • Cliquer sur le bouton Hop !
  • Sélectionner la cellule d'en-tête de la colonne Références (ici B6)
  • Sélectionner la première cellule de la ligne d'en-têtes des résultats (ici F6)
  • Répondez à la question en cas de doublon sur une ligne
  • La colonne des références peut être sélectionnée sur n'importe quelle feuille de n'importe quel classeur ouvert
  • La 1ère cellule de la plage résultat peut-être sélectionnée sur n'importe quelle feuille de n'importe quel classeur ouvert
  • Les références et les résultats ne sont pas forcément sur le même feuille ni dans le même classeur
  • on peut choisir si en cas de doublon dans une référence on retiens la dernière ou la première occurrence
nota : on peut, à partir du bouton Hop, traiter n'importe quelle colonne de références située dans n'importe quel classeur ouvert sans que ce dernier ne comporte la macro.

Bonsoir MaPomme,
J'ai testé dans la journée votre solution VBA.
Ce n'est pas une solution turbo, mais une solution fusée.
Petite question :
Afin d'éviter d'avoir plusieurs classeurs ouverts, donc des risques d'erreur, j'ai fait un copier/coller de votre macro dans mon classeur récapitulatif qui a une vingtaine de feuilles. Là problème. Lorsque je lance la macro, j'ai le message :

1595363164663.png


Pourriez-vous m'indiquer ce qui bloque ?
Pour info, si je recopie dans votre classeur une de mes colonnes "référence", la macro de votre classeur fonctionne parfaitement.
Cordialement.
Michel
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir Michel

Il faut ajouter la référence à la bibliothèque "Microsoft Scripting Runtime" dans ton classeur.

1) Aller dans VBE (Visual Basic Editor)
2) Aller dans Tools => Références
1595364299954.png

3) Chercher "Microsoft Scripting Runtime" et cocher la référence...

1595364148903.png


Ce n'est pas compliqué ensuite ce devrait fonctionner...

Bonne soirée
@+Thierry
 

MCOTTEND

XLDnaute Nouveau
Bonsoir MaPomme,
J'ai testé dans la journée votre solution VBA.
Ce n'est pas une solution turbo, mais une solution fusée.
Petite question :
Afin d'éviter d'avoir plusieurs classeurs ouverts, donc des risques d'erreur, j'ai fait un copier/coller de votre macro dans mon classeur récapitulatif qui a une vingtaine de feuilles. Là problème. Lorsque je lance la macro, j'ai le message :

Regarde la pièce jointe 1073873

Pourriez-vous m'indiquer ce qui bloque ?
Pour info, si je recopie dans votre classeur une de mes colonnes "référence", la macro de votre classeur fonctionne parfaitement.
Cordialement.
Michel

Bonsoir MaPomme,
Impeccable pour l'explication.
Dernières questions :
Toutes mes feuilles sont strictement identiques. Comment puis-je remplacer les deux boites de dialogues :
1) Set PremCellRef = Application.InputBox("Sélectionner la cellule de l'en-tête de la colonne des Références,SVP.", Type:=8)
2) Set PremCellResult = Application.InputBox("Sélectionner la première cellule de la plage des résultats,SVP.", Type:=8)
par les références de cellules fixes (respectivement "D2" et "E2" sur chaque feuille

Idem, je ne conserve jamais le dernier code si dans une même ligne en cas de doublon. Comment supprimer la boîte de dialogue :
. texte = "En cas de doublons sur une ligne, nous retiendrons la " & IIf(PremOuDer = vbYes, "dernière", "première") & " occurrence."

Te remerciant vivement de ton aide sur ce code,
Bonne soirée.
Michel
 

Statistiques des forums

Discussions
312 215
Messages
2 086 316
Membres
103 176
dernier inscrit
jean.yvesjean.yves