Trouver et Remplacer des Valeurs, Excel VBA

Trouver et Remplacer des Valeurs, Excel VBA

Voici une explication détaillée et un code VBA pour Trouver et Remplacer des Valeurs dans Excel. Je vais vous guider à travers chaque partie du code pour que vous puissiez comprendre son fonctionnement.
Vue d’Ensemble :
L’objectif de ce code est de rechercher une valeur spécifique (ou une chaîne de texte) dans une plage de cellules sélectionnée et de la remplacer par une autre valeur. Cela est très utile pour nettoyer des données, corriger des erreurs ou simplement mettre à jour des valeurs dans un grand ensemble de données.
Concepts Clés du VBA :
1. Range (Plage) : Cela fait référence à une sélection spécifique de cellules dans Excel.
2. Méthode Find (Trouver) : Utilisée pour rechercher des données spécifiques dans une plage.
3. Méthode Replace (Remplacer) : Utilisée pour remplacer les données trouvées par une autre valeur.
Code VBA pour Trouver et Remplacer des Valeurs :

Sub TrouverEtRemplacerValeurs()
    Dim ws As Worksheet
    Dim rng As Range
    Dim valeurTrouver As String
    Dim valeurRemplacer As String
    Dim cellule As Range
    ' Définir la feuille de calcul avec laquelle vous souhaitez travailler (vous pouvez spécifier un nom de feuille particulier)
    Set ws = ThisWorkbook.Sheets("Feuille1")
    ' Définir la plage dans laquelle vous souhaitez rechercher (vous pouvez l'ajuster si nécessaire)
    Set rng = ws.Range("A1:C10")  ' Ajustez la plage selon vos besoins
    ' Définir la valeur à rechercher et la valeur à remplacer
    valeurTrouver = "ancienneValeur"   ' La valeur que vous souhaitez rechercher
    valeurRemplacer = "nouvelleValeur" ' La valeur par laquelle vous voulez remplacer
    ' Boucle à travers chaque cellule dans la plage spécifiée
    For Each cellule In rng
        ' Vérifier si la cellule contient la valeur à rechercher
        If cellule.Value = valeurTrouver Then
            ' Remplacer la valeur par la nouvelle valeur
            cellule.Value = valeurRemplacer
        End If
    Next cellule
    MsgBox "Le remplacement a été effectué avec succès!", vbInformation
End Sub

Explication du Code :
1. Set ws : Cette ligne définit la variable ws qui fait référence à la feuille de calcul sur laquelle vous souhaitez travailler. Dans cet exemple, la feuille « Feuille1 » est utilisée, mais vous pouvez remplacer ce nom par le nom de la feuille que vous souhaitez utiliser.
2. Set rng : Cette ligne définit la plage dans laquelle vous allez rechercher et remplacer les valeurs. Dans l’exemple, la plage est de A1 à C10, mais vous pouvez l’ajuster selon votre besoin. Si vous voulez rechercher dans toute la feuille, vous pouvez définir cela par ws.UsedRange.
3. valeurTrouver et valeurRemplacer : Ces variables stockent la valeur que vous souhaitez rechercher (valeurTrouver) et la valeur avec laquelle vous souhaitez la remplacer (valeurRemplacer). Vous pouvez changer « ancienneValeur » et « nouvelleValeur » par les valeurs de votre choix.
4. Boucle à travers les cellules : La boucle For Each cellule In rng parcourt chaque cellule de la plage définie (rng). Pour chaque cellule, elle vérifie si la valeur correspond à la valeur recherchée.
5. Vérification et remplacement : À l’intérieur de la boucle, la condition If cellule.Value = valeurTrouver vérifie si la cellule contient la valeur que vous recherchez. Si c’est le cas, cellule.Value = valeurRemplacer remplace la valeur trouvée par la nouvelle valeur.
6. Message de confirmation : Après l’exécution du code, une boîte de message apparaît pour indiquer que l’opération de remplacement est terminée.
Option Avancée : Utilisation des Méthodes Find et Replace
Si vous souhaitez utiliser les méthodes intégrées de Find et Replace d’Excel, voici une version améliorée du code qui utilise la méthode Range.Find. Cela permet de plus de contrôle sur la recherche (comme la recherche de chaînes partielles, la distinction des majuscules/minuscules, etc.) :

Sub TrouverEtRemplacerAvance()
    Dim ws As Worksheet
    Dim rng As Range
    Dim valeurTrouver As String
    Dim valeurRemplacer As String
    Dim cellule As Range
    Dim celluleTrouvee As Range
    ' Définir la feuille de calcul et la plage
    Set ws = ThisWorkbook.Sheets("Feuille1")
    Set rng = ws.Range("A1:C10") ' Ajustez la plage selon vos besoins
    ' Définir les valeurs à rechercher et à remplacer
    valeurTrouver = "ancienneValeur"
    valeurRemplacer = "nouvelleValeur"
    ' Utiliser la méthode Find pour rechercher la valeur
    Set celluleTrouvee = rng.Find(What:=valeurTrouver, LookIn:=xlValues, LookAt:=xlWhole, _
                                  SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
    ' Vérifier si la valeur a été trouvée
    If Not celluleTrouvee Is Nothing Then
        ' Démarrer la boucle depuis la première cellule trouvée
        firstAddress = celluleTrouvee.Address
        Do
            ' Remplacer la valeur trouvée par la nouvelle valeur
            celluleTrouvee.Value = valeurRemplacer
            ' Continuer la recherche pour la prochaine occurrence
            Set celluleTrouvee = rng.FindNext(celluleTrouvee)
        ' Boucler jusqu'à ce que toutes les occurrences soient remplacées
        Loop While Not celluleTrouvee Is Nothing And celluleTrouvee.Address <> firstAddress
    Else
        MsgBox "Valeur non trouvée !"
    End If
    MsgBox "Le remplacement a été effectué avec succès!", vbInformation
End Sub

Changements Clés dans la Version Avancée :
1. Méthode Find : La méthode Find recherche la première occurrence de la valeur dans la plage spécifiée. Elle permet également de configurer des options de recherche, comme la distinction entre majuscules et minuscules (MatchCase), ou la recherche partielle (LookAt).
2. Méthode FindNext : Cette méthode permet de continuer la recherche pour la prochaine occurrence de la valeur après avoir trouvé la première. Cela permet de remplacer toutes les occurrences de la valeur recherchée.
3. Logique de boucle : La structure Do…Loop garantit que la recherche continue jusqu’à ce que toutes les occurrences de la valeur soient trouvées et remplacées. La boucle s’arrête lorsque la première cellule est trouvée à nouveau (grâce à la variable firstAddress).
4. Gestion des erreurs : Si la méthode Find ne trouve pas la valeur, elle retourne Nothing et un message s’affiche pour indiquer que la valeur n’a pas été trouvée.
Points Importants :

  • LookIn : Détermine si la recherche doit se faire dans les formules (xlFormulas), les valeurs (xlValues), ou les commentaires (xlComments).
  • LookAt : Détermine si la recherche doit correspondre à l’intégralité du contenu de la cellule (xlWhole) ou seulement à une partie de celui-ci (xlPart).
  • SearchDirection : Contrôle si la recherche se fait de haut en bas (xlNext) ou de bas en haut (xlPrevious).
  • MatchCase : Si True, la recherche est sensible à la casse (majuscules/minuscules).

Conclusion :
Ce code fournit une solution simple et flexible pour rechercher et remplacer des valeurs dans une plage spécifique de cellules. La version de base parcourt manuellement chaque cellule, tandis que la version avancée utilise les méthodes Find et FindNext d’Excel pour une approche plus efficace, surtout pour de grands ensembles de données.

Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x