Rechercher et remplacer une liste de données dans un fichier

Bonjour

J’ai besoin de vos aides, je me trouve butter.

Je dois écrire une macro qui prend une liste de 10 éléments dans un classeur(1) et les compare a des données d'un autre classeur(2) , dans le cas où les données sont identique il le remplace par 0.

4fichier.xlsm (17.09 Ko)

Bonjour franck kengne et bienvenue sur le forum,

à tester,

Sub remplace()
Dim m, c As Range, rp

rp = Sheets("Feuil1").Range("B3:B12")
Set plg = Sheets("Feuil2").Range("A2:D10")

For Each m In rp
  With plg
    Set c = .Find(m, LookIn:=xlValues, LookAt:=xlWhole)
    If Not c Is Nothing Then
        firstAddress = c.Address
        Do
            Set c = .FindNext(c)
            c = 0
        Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
 End With
Next
End Sub

Merci

je rencontre un souci lors de l’exécution

un popup s'affiche For Each m In... doit etre un objet.

que faire svp

Bonjour,

désoler, je n'ai pas cette erreur,

à tester,

Bonjour Isabelle,

je crois que ça passera mieux avec :

Option Explicit

Sub remplace()
Dim rp As Range, plg As Range, m As Range, c As Range, firstAddress$

Set rp = Sheets("Feuil1").Range("B3:B12")
Set plg = Sheets("Feuil2").Range("A2:D10")

'suite de la sub

End Sub

(c'est surtout le set qui est devant l'affectation de rp )

dhany

le second fichier dans le quel les données sont rechercher et remplacer a 0, est d'une taille variable, lorsq je remplace le code

Set plg = Sheets("Feuil2").Range("A2:D10") par ceci

Set plg = Sheets("Feuil2").Range("A:J")

svp que faire

Bonjour franck kengne, Isabelle,

tu a écrit :

le second fichier ... est d'une taille variable

je te laisse essayer ce fichier Excel (le code VBA est une adaptation de celui de sabV) :

ça s'adapte automatiquement à un nombre de lignes et colonnes variable ; j'ai volontairement évité l'utilisation de .CurrentRegion, car ça marcherait pas si tu as des lignes vides ou des colonnes vides intercalaires.


voici le code VBA :

Option Explicit

Sub remplace()
  Dim rp As Range, plg As Range, m As Range
  Dim c As Range, firstAddress$, n&, k%
  Set rp = [Feuil1!B3:B12]
  With Worksheets("Feuil2")
    n = .Cells(Rows.Count, 1).End(3).Row: If n = 1 Then Exit Sub
    k = .Cells(2, Columns.Count).End(1).Column
    Set plg = .[A2].Resize(n - 1, k)
  End With
  For Each m In rp
    With plg
      Set c = .Find(m, LookIn:=xlValues, LookAt:=xlWhole)
      If Not c Is Nothing Then
        firstAddress = c.Address
        Do
          Set c = .FindNext(c): c = 0
        Loop While Not c Is Nothing And c.Address <> firstAddress
      End If
    End With
  Next m
End Sub

Sub Reset()
  [Feuil3!A2:D10].Copy [Feuil2!A2]
End Sub

dhany

Bonjour et merci pour votre aide.

j'ai essayé cela avec une grande liste de fichier cela n'a que géré la colonne A2

svp j'au un souci lors de ma recherche avec cette macro quand elle trouve par exemple a-1 elle remplace par 0 et j"aimerais aussi que lorsqu'elle trouve 1-a elle remplace par 0.

Stp besoin d'aide

Rechercher des sujets similaires à "rechercher remplacer liste donnees fichier"