On a tous connu un client qui a passé 3 jours sur un fichier Excel, qui arrive tout fier vers nous après être parti d'un Rapport Salesforce, avoir croisé les données avec 42 fichiers Excel, 13 bases Access et le fameux Datawarehouse de la boîte...
Sauf que lorsqu'il arrive avec son beau fichier intitulé scoring_comptes_gros_potentiel_top_region.csv, vous vous rendez compte avec horreur 😱 qu'il ne contient que des Ids sur 15 caractères.
Et vous vous êtes vu répondre :
"Merci X pour ce travail énorme accompli mais il nous faut les Id sur 18 caractères pour faire un chargement dans Salesforce, si je t'extrais les Id 188 caractères tu peux recommencer en gardant bien la première colonne intacte ?"
Alors si la plupart d'entre vous connaissent des façons de reconstruire l'Id 18 caractères (insensible à la casse) à partir de l'Id 15, celle que je vais vous présenter en dernier est, selon moi, celle qui répond le mieux à notre cas d'usage :
Méthode 1 : Champ formule avec CASESAFEID(Id) 😣
On crée une formule sur un objet et on utilise la fonction CASESAFEID puis on affiche cette formule dans les rapports pour avoir l'Id 18.
Inconvénients :
Créer un champ formule sur TOUS 😱 les objets où on veut l'utiliser
Attribuer des permissions sur ce champ aux utilisateurs et ajouter aux types de rapports (Report Types)
Vos utilisateurs n'auront pas forcément le réflexe d'utiliser ce champ lors de la construction des rapports
Méthode 2 : Un outil en ligne 😩
La méthode Javascript existe pour recalculer les 3 derniers caractères (checksum ou contrôle d'intégrité en français), le code est disponible donc beaucoup ont intégré une sorte de petite calculette sur leur site comme nos amis de chez AdminBooster mais il en existe plein d'autres.
Inconvénients :
Obligation d'extraire les Ids de votre fichier Excel, les remettre ensuite une fois enrichis; on sait ce qui risque de se passer, les 00 de prefixe de votre Id risquent de disparaitre quand vous allez recoller les infos dans Excel
Manipulation manuelle, risque d'erreur, etc... Je ne dis pas que le fichier de Michel n'est pas une source d'erreur mais inutile d'en rajouter de notre côté
Méthode 3 : Un plugin Excel 😭
A ma connaissance il en existe un seul avec des outils vraiment utiles et c'est XL-Connector par Xappex mais les versions avec des fonctionnalités intéressantes sont payantes et c'est pas donné.
Inconvénients :
Installation de plugin Excel, on a pas forcément les droits dans toutes les entreprises
Versions payantes quand elles apportent des fonctionnalités intéressantes (299$/user/an)
Méthode 4 : LA Formule Excel ultime 🤩
Votre utilisateur vous a fourni un fichier Excel?
Autant l'enrichir directement, rapidement, gratuitement et sans changer d'outil !
Pour ce faire, suivez les étapes :
Placez votre Id sur 15 caractères en colonne A du fichier Excel
Insérez une colonne vide dans la colonne B
Copiez la formule ci-dessous en B2 et déroulez jusqu'à la dernière ligne de votre fichier (et évidemment copiez / collez en Valeurs pour garder le texte et pas la formule)
Voila ça vous a pris environ 10 secondes !
=CONCATENER(A2;STXT("ABCDEFGHIJKLMNOPQRSTUVWXYZ012345";(SIERREUR(SI(TROUVE(STXT(A2;1;1);"ABCDEFGHIJKLMNOPQRSTUVWXYZ")>0;1;0);0)+SIERREUR(SI(TROUVE(STXT(A2;2;1);"ABCDEFGHIJKLMNOPQRSTUVWXYZ")>0;2;0);0)+SIERREUR(SI(TROUVE(STXT(A2;3;1);"ABCDEFGHIJKLMNOPQRSTUVWXYZ")>0;4;0);0)+SIERREUR(SI(TROUVE(STXT(A2;4;1);"ABCDEFGHIJKLMNOPQRSTUVWXYZ")>0;8;0);0)+SIERREUR(SI(TROUVE(STXT(A2;5;1);"ABCDEFGHIJKLMNOPQRSTUVWXYZ")>0;16;0);0)+1);1);STXT("ABCDEFGHIJKLMNOPQRSTUVWXYZ012345";(SIERREUR(SI(TROUVE(STXT(A2;6;1);"ABCDEFGHIJKLMNOPQRSTUVWXYZ")>0;1;0);0)+SIERREUR(SI(TROUVE(STXT(A2;7;1);"ABCDEFGHIJKLMNOPQRSTUVWXYZ")>0;2;0);0)+SIERREUR(SI(TROUVE(STXT(A2;8;1);"ABCDEFGHIJKLMNOPQRSTUVWXYZ")>0;4;0);0)+SIERREUR(SI(TROUVE(STXT(A2;9;1);"ABCDEFGHIJKLMNOPQRSTUVWXYZ")>0;8;0);0)+SIERREUR(SI(TROUVE(STXT(A2;10;1);"ABCDEFGHIJKLMNOPQRSTUVWXYZ")>0;16;0);0)+1);1);STXT("ABCDEFGHIJKLMNOPQRSTUVWXYZ012345";(SIERREUR(SI(TROUVE(STXT(A2;11;1);"ABCDEFGHIJKLMNOPQRSTUVWXYZ")>0;1;0);0)+SIERREUR(SI(TROUVE(STXT(A2;12;1);"ABCDEFGHIJKLMNOPQRSTUVWXYZ")>0;2;0);0)+SIERREUR(SI(TROUVE(STXT(A2;13;1);"ABCDEFGHIJKLMNOPQRSTUVWXYZ")>0;4;0);0)+SIERREUR(SI(TROUVE(STXT(A2;14;1);"ABCDEFGHIJKLMNOPQRSTUVWXYZ")>0;8;0);0)+SIERREUR(SI(TROUVE(STXT(A2;15;1);"ABCDEFGHIJKLMNOPQRSTUVWXYZ")>0;16;0);0)+1);1))
(Merci Frédéric VALLERAND 👍 pour le CONCATENER au lieu de CONCAT pour la rétro-compatibilité dans Excel, anciennes versions)
La prochaine fois qu'on vous sollicitera pour ça, vous aurez la réponse ultime en poche
Bonjour à tous
Dans mon entreprise, nous utilisons Excel 2013 sur certains postes et Google Sheets sur tous. En essayant cette formule il s'avère que je me suis trouvé face à un message d'erreur indiquant un problème dans la formule.
Si cela vous arrive également, pas de panique. Après recherche, j'ai identifié la source de cette anomalie. J'ai juste remplacé l'argument CONCAT de la formule par CONCATENER (CONCATENATE).
Et maintenant, je peux calculer les 3 derniers caractères de chaque ID. Encore merci pour cette formule.