Bonjour,
La macro ci-dessous génère une erreur d'exécution '1004' : la méthode 'Range' de l'objet '_Worksheet a échoué.
Cette erreur est documentée, mais les corrections ne donnent pas de résultat fonctionnel.

L'objectif est de remplacer le titre des colonnes de la feuille interet : theatre cuisine tricot livres bricolage balade convivialite cinema informatique sport famille anglais couture
par des valeurs enregistrées dans la feuille DataInteret
  • la colonne A contient les valeurs ordonnées A>Z et sans espaces et caractères spéciaux
  • la colonne B contient les valeurs de remplacement



anglais Anglais
balade Balade
bricolage Bricolage
cinema Cinéma
convivialite Convivialité
... ...

Voyez-vous une erreur dans ce code ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Sub remplacerInteret()
'Remplacer les valeurs de la première ligne de la feuille interet
 
'Déclarer les variables
Dim Feuille1 As Worksheet 'La feuille où se trouvent les valeurs à remplacer
Dim Feuille2 As Worksheet 'La feuille où se trouvent les valeurs de remplacement
Dim Colonne1 As Long 'La colonne où se trouvent les valeurs à remplacer
Dim Colonne2 As Long 'La colonne où se trouvent les valeurs de remplacement
Dim DerniereLigne1 As Long 'La dernière ligne non vide de la colonne 1
Dim DerniereLigne2 As Long 'La dernière ligne non vide de la colonne 2
Dim i As Long 'Un compteur pour parcourir les colonnes
Dim Valeur1 As Variant 'La valeur à remplacer
Dim Valeur2 As Variant 'La valeur de remplacement
 
'Affecter les variables
Set Feuille1 = Worksheets("interet") 'La feuille où se trouvent les valeurs à remplacer
Set Feuille2 = Worksheets("DataInteret") 'La feuille où se trouvent les valeurs de remplacement
 
Colonne1 = 1 'La première colonne de la feuille interet
Colonne2 = 1 'La première colonne de la feuille DataInteret
DerniereLigne1 = Feuille1.Cells(1, Columns.Count).End(xlToLeft).Column 'Trouver la dernière colonne non vide de la ligne 1
DerniereLigne2 = Feuille2.Cells(Rows.Count, Colonne2).End(xlUp).Row 'Trouver la dernière ligne non vide de la colonne 2
 
'Déclarer la plage
Dim plage As Range: Set plage = Range(Cells(1, Colonne1), Cells(DerniereLigne2, Colonne2))
 
'Parcourir les colonnes de la ligne 1
For i = Colonne1 To DerniereLigne1
'Récupérer la valeur à remplacer
Valeur1 = Feuille1.Cells(1, i).Value
'Rechercher la valeur correspondante dans la colonne 2
Valeur2 = Application.VLookup(Valeur1, Feuille2.Range(Cells(1, Colonne1), Cells(DerniereLigne2, Colonne2)), 2, False)
 
'Si la valeur est trouvée, la remplacer
If Not IsError(Valeur2) Then
Feuille1.Cells(1, i).Value = Valeur2
End If
Next i
 
End Sub