Remplacer certaines données de la colonne "A" par d’autres
Bonjour à tous,
Je reviens vers vous car j’ai besoin de votre aide, si vous le permettez, on entre directement dans le vif du sujet. Voici de quoi il s’agit :
La feuille "Résultat" contient toutes mes données, les données qui nous intéressent dans ce cas précis se trouvent dans la colonnes "A".
Que contiennent les cellules de cette colonne ?
La colonne "A" contient la référence pour chaque jeune oiseau, pour mieux expliquer, nous allons prendre un exemple : HTY27-001/2025 M et nous allons le détailler pour mieux le comprendre :
- Le "HTY27" c-à-d tout ce qui se trouve avant le tiret (-) est le numéro de matricule de l’éleveur.
- Le 001 : c-à-d un nombre de trois chiffres, qui se trouve après le tiret (-) est le numéro de bague de l’oiseau.
- Le 2025 : c-à-d un nombre de 4 chiffres, qui se trouve toujours après le slache (/), il représente l’année de naissance de l’oiseau.
- Le "M" et le "F" à la fin de chaque cellule, représente le sexe, "M" pour mâle, "F" pour Femelle.
J’aimerais modifier les données de la colonne "A" comme suit :
- Les caractères qui se trouvent à gauche du tiret (-) et qui sont à remplacer sont :
"HTY27" est remplacé par "AE", "HWA96" est remplacé par "NM", "HWA01" est remplacé par "MM", "3027" est remplacé par "LL", "5919" est remplacé par "CL", et enfin "207" est remplacé par "RC".
- Supprimer les zéros inutiles du nombre à trois chiffres qui se trouve à droite du tiret (-) comme suit :
- Si le nombre est inférieur à 10, on enlève les deux zéros devant le nombre, c-à-d : le nombre "001" devient 1, le nombre "002" devient 2, etc .. jusqu’au nombre "009" qui devient 9.
- Si le nombre est inférieur à 100 et supérieur ou égal à 10, alors le nombre "010" devient 10, le nombre "011" devient 11, jusqu’à ce que le nombre "099" qui devient 99.
- Remplacer l’année "2025" par "25", c-à-d que l’année "2025" devient "25", l’année "2024" devient "24" etc..
- Et enfin, supprimer le caractère espace (vide) qui se trouve derrière le "M" et le "F"
En résumé, si on prend mon exemple : HTY27-001/2025 M, le résultat final après modifications sera : AE-1/25M
Prenons un autre exemple : "HWA96-100/2024 F" devient : NM-100/24F
Je reste à votre disposition au besoin pour d’autres informations supplémentaires.
PS : Les modifications ainsi que le résultat final doit absolument figurer dans la colonne "A" pour remplacer les anciennes données et pas dans une autre colonne.
Information : sauf erreur de ma part, vous trouverez le résultat final dans la feuille "Résultat_Souhaité", c’était assez long car les modifications ont été faite manuellement.
D’avance merci pour vos contributions.
Bonjour Fanfan38,
Je suis très content de vous retrouver.
Merci pour votre retour et le code proposé, ce dernier fonctionne très bien et me donne le résultat souhaité.
Pouvez-vous me rendre un tout dernier service, à savoir, commenter le code afin que je puisse mieux comprendre le travail des fonctions que vous avez utiliser pour résoudre le problème.
D’avance merci.
Cordiale poignée de mains.
Bonjour Fanfan38,
J’espère que tu ne vas pas me détester car j’ai été trop vite pour dire que le code répond à mes attentes.
A vrai dire, le code dans notre cas ici précis fonctionne très bien, seulement il y’a un petit problème qui nous barre la route. Je m’explique :
Je penses que le fait de créer et travailler un tableau "T_data" ne répond pas à la manière dont je travaille avec mes données.
Au fait, les données de ma feuille "Résultat" sont le résultat d’un filtre sur ma feuille principale, ce qui veut dire que le nombre de lignes des données de la feuille "Résultat" est variable, la feuille "Résultat" peut contenir plus de lignes ou moins de lignes selon le résultat du filtre appliqué.
Ne pourrait-on pas pour trouver une solution à mon problème, travailler avec range variable à la place du tableau "T_data".
Dans ce cas, on remplace le tableau "T_data" par le Range comme suit :
With ActiveSheet
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
Set Rng = .Range("A1", .Cells(LastRow, "A"))
End With
Et puis on fait le reste du code pour trouver une solution qui ne travaille pas avec "T_data".
Avec toutes mes excuses et à vous lire.
Bonjour FanFan38,
Merci pour votre retour.
Cette fois-ci, c’est la bonne, le dernier code proposé est le bon, il répond à mes attentes et fonctionne parfaitement avec les données importées, peu importe le nombre de lignes, le code s’adapte automatiquement.
Merci beaucoup et au plaisir de vous lire à l’occasion.