la méthode 'Range' de l'objet '_Worksheet a échoué
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:
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 |