Remplacer le texte dans les cellules - Conseils Excel

Table des matières

Jean a posé la question Excel de cette semaine:

J'essaie de convertir un catalogue de prix fournisseur dans Excel pour faire correspondre leurs codes UPC à notre système de codes UPC. Leur catalogue de prix a une colonne dans Excel avec une série de nombres, par exemple. 000004560007 OU cel000612004. Ce que je dois faire est double. Je dois retirer les trois premiers zéros sans supprimer aucun autre 0 dans la cellule. Ensuite, je dois ajouter un code à 3 chiffres "upc" avant le premier chiffre numérique dans la cellule. Ce sera un besoin permanent. Je vais devoir former plusieurs personnes à l'utilisation du système Excel.

On dirait que Jean a déjà envisagé d'utiliser Edit-Replace pour se débarrasser des trois zéros. Cela ne fonctionnerait pas car une modification de remplacement sur "000004560007" entraînerait la disparition des deux occurrences de 000.

Tout d'abord, je veux suggérer à Jean d'insérer une colonne temporaire à côté des codes de prix actuels, d'écrire une formule pour faire la transformation, puis d'utiliser Edit-Copy, Edit-PasteSpecial-Values ​​pour recopier la formule sur les codes de prix d'origine.

La fonction REPLACE () mal documentée fera l'affaire dans ce cas. J'ai été déçu par l'implémentation de REPLACE (). J'aurais pensé qu'il demanderait un texte spécifique à remplacer, mais à la place, il demande à l'utilisateur de déterminer les positions des caractères à remplacer. REPLACE remplacera une partie d'une chaîne de texte par une nouvelle chaîne. Les quatre arguments que vous passez à la fonction sont la cellule contenant l'ancien texte, la position du caractère dans l'ancien texte que vous souhaitez remplacer, le nombre de caractères à remplacer et le nouveau texte à utiliser.

Mon hypothèse simplificatrice est que les trois zéros représentent le début du code UPC dans la chaîne. Ainsi, il n'est pas nécessaire de rechercher le premier caractère numérique dans la cellule. Une fois que la formule trouve les trois zéros, elle peut remplacer ces trois zéros par la chaîne "upc".

Pour trouver l'emplacement de la première occurrence de "000" dans le texte, vous utiliserez cette formule:

=FIND(A2,"000")

La formule que Jean devrait entrer dans la cellule B2 serait:

=REPLACE(A2,FIND("000",A2),3,"upc")

Je pense que les analystes de tarification mettent en évidence une plage de cellules, puis invoquent cette macro. La macro utilisera une boucle avec «Pour chaque cellule de la sélection» au début. Avec cette boucle, "cellule" devient une variable de plage spéciale. Vous pouvez utiliser cell.address ou cell.value ou cell.row pour trouver l'adresse, la valeur ou la ligne de la cellule actuelle dans la boucle. Voici la macro:

Public Sub Jean() ' This macro will replace the first occurrence of "000" ' in each selected cell with the string "upc" ' copyright 1999 www.MrExcel.com For Each cell In Selection cell.Value = Replace(cell.Value, "000", "upc", 1, 1, vbTextCompare) Next cell End Sub

Notez qu'il s'agit d'une macro de type destructif. Lorsque l'utilisateur met en évidence une plage de cellules et exécute la macro, ces cellules seront modifiées. Il va sans dire que vous souhaitez tester minutieusement votre macro sur des données de test avant de la lâcher sur des données de production réelles. Lorsque vous avez une situation comme celle de Jean où vous serez constamment amené à transformer une colonne en utilisant une formule complexe, écrire une simple macro comme celle illustrée ici peut être un outil efficace et rapide.

Articles intéressants...