Remplacer certaines valeurs d'un classeur par données dans tableau de conversion

j.merlen

XLDnaute Nouveau
Bonjour à tous ,
Merci d'abord pour l'aide que vous pourriez m'apporter.

Voila mon problème, je possède une série de feuille excel contenant certains contenu de cellules que je souhaite remplacer suivant un tableau de correspondance repris sur une autre feuille du classeur.
je souhaite donc réaliser une moulinette qui ferait une recherche d'un contenu pour chaque cellule sur l'ensemble des feuilles et qui le remplacerait en cas de correspondance avec le tableau de correspondance. Une fois la première ligne réalisée on passerait à la seconde etc...

J'ai joint un petit extrait de mon tableau excel, avec sur les feuilles 1 à 3 les pages que je souhaite remplacer , en page 4 mon tableau de correspondance et en page 5 le résultat souhaité pour la page 1 (en rouge les modifs..)

Je souhaitais réaliser cela avec un ensemble de conditions mais je ne m'en sors pas et je pense qu'il va me falloir réaliser une petite macro.

En espérant que vous puissiez me mettre sur la piste.

Bonne soirée
Merci

Jérémy
 

Pièces jointes

  • classeur remplacement.xlsx
    71.7 KB · Affichages: 76

Staple1600

XLDnaute Barbatruc
Re : Remplacer certaines valeurs d'un classeur par données dans tableau de conversion

Bonsoir j.merlen et Bienvenue parmi nous


Joins plutôt un fichier *.xls (Classeur version 97-2003)

Ainsi plus de monde sera susceptible de t'aider.
 

david84

XLDnaute Barbatruc
Re : Remplacer certaines valeurs d'un classeur par données dans tableau de conversion

Bonsoir,
comme je bloque et que je ne comprends pas où est mon erreur, je poste quand même pour que vous puissiez me corriger.
J'ai tenté :
Code:
Sub Remplacer()
Dim Corresp As Object, i&, j&, Premier, c As Object, DerLigne&
DerLigne = Sheets("tableau de correspondance").Range("B" & Rows.Count).End(xlUp).Row
Set Corresp = Sheets("tableau de correspondance").Range("A1:B" & _
Sheets("tableau de correspondance").Range("B" & Rows.Count).End(xlUp).Row)
For i = 1 To DerLigne
    For j = 1 To Sheets.Count
        If Sheets(j).Name <> "tableau de correspondance" Then
            With Worksheets(j).UsedRange
                Set c = .Find(Corresp(i, 1), LookIn:=xlValues, LookAt:=xlPart)
                   If Not c Is Nothing Then
                        Premier = c.Address
                        Do
                        c.Value = Corresp(i, 2)
                        Set c = .FindNext(c)
                        Loop While Not c Is Nothing And c.Address <> Premier
                    End If
            End With
        End If
      Next j
  Next i
End Sub
et
Code:
Sub Remplacer()
Dim Corresp As Object, i&, j&, Premier, c As Object, DerLigne&
DerLigne = Sheets("tableau de correspondance").Range("B" & Rows.Count).End(xlUp).Row

For i = 1 To DerLigne
    For j = 1 To Sheets.Count
        If Sheets(j).Name <> "tableau de correspondance" Then
            With Worksheets(j).UsedRange
             Set c = .Find(Sheets("tableau de correspondance").Cells(i, 1), LookIn:=xlValues, LookAt:=xlPart)
                    If Not c Is Nothing Then
                        Premier = c.Address
                        Do
                        c.Value = Sheets("tableau de correspondance").Cells(i, 2)
                        Set c = .FindNext(c)
                        Loop While Not c Is Nothing And c.Address <> Premier
                    End If
            End With
        End If
      Next j
  Next i
End Sub
mais dans les 2 cas, j'ai une erreur d'exécution 91 (Variable objet ou variable de bloc with non défini).
Comme là tout de suite je ne vois pas mon erreur je vais me coucher:confused:.
Si quelqu'un trouve ce qui ne va pas merci de me l'indiquer et me l'expliquer.
A+
 

david84

XLDnaute Barbatruc
Re : Remplacer certaines valeurs d'un classeur par données dans tableau de conversion

Bonjour,
Bon, en intégrant une gestion d'erreurs, normalement cela fonctionne, mais je pensais qu'il y avait moyen de l'éviter:confused:.
Code:
Sub Remplacer()
Dim i&, j&, Premier, c As Object, DerLigne&
DerLigne = Sheets("tableau de correspondance").Range("B" & Rows.Count).End(xlUp).Row
For i = 1 To DerLigne
    For j = 1 To Sheets.Count
        If Sheets(j).Name <> "tableau de correspondance" Then
            With Worksheets(j).UsedRange
                Set c = .Find(Sheets("tableau de correspondance").Cells(i, 1).Value, LookIn:=xlValues, LookAt:=xlPart)
                    If Not c Is Nothing Then
                        Premier = c.Address
                        Do
                        c.Value = Sheets("tableau de correspondance").Cells(i, 2).Value
                        Set c = .FindNext(c)
                        On Error Resume Next
                        Loop While Not c Is Nothing And c.Address <> Premier
                        If Err.Number <> 0 Then Err.Clear
                    End If
            End With
        End If
      Next j
  Next i
End Sub
 

Discussions similaires

Réponses
26
Affichages
497

Statistiques des forums

Discussions
312 502
Messages
2 089 033
Membres
104 010
dernier inscrit
Freba