Bonjour,
J'ai besoin de réaliser un grand nombre de traduction de variables dans un fichier excel d'un quinzaine de feuilles. On trouve sur chaque feuille, d'un côté un schéma de fonctionnement comprenant les variables à traduire, et à coté la liste de variables ainsi que leur traductions. Après avoir traduit la moitié de la 1er feuille en rechercher/remplacer manuellement, je me suis dis que ça serait plus sympa et moins fastidieux avec VBA.
Débutant avec VBA, j'avance doucement depuis 2/3 jours en corrigeant les bugs avec l'aide des forums, avant d'en découvrir d'autres 2 lignes en dessous. Résultat je ne suis plus sûr de gagner tant de temps que prévu.
A ce stade deux solutions: soit ma macro fonctionne avant lundi, soit je réactive le mode chinois avec les rechercher/remplacer à la main..
En résumé, j'aimerais:
_exécuter un 1er search/replace avec la 1er ligne de mon tableau de traduction
_une fois que la recherche est terminée, passer à la 2ème ligne, puis la 3ème...jusqu'à la dernière ligne du tableau non vide
_passez à la feuille suivante
Actuellement quand j'exécute, excel me renvoit une erreur "objet requis" à la ligne14. Il semble il y voir un problème de syntaxe à la ligne1
J'ai rajouté des commentaires pour que vous puissiez suivre ce que je souhaite/espère réaliser à la ligne suivante:
La structure peut vous paraitre illogique, c'est le fruit de plusieurs post sur différents forums en ajoutant mes bidouillages perso
J'espère avoir été assez clair, j'attends vos suggestions avec impatience!
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 Dim Trouve As Range, PlageDeRecherche As Range Dim Valeur_Cherchee, Valeur_remplacement, AdresseTrouvee As String Dim i, w, nb_remplacement As Integer 'w:nombre de cases non vides dans la colonne X (=colonne avec les mots à traduire) w = Application.WorksheetFunction.CountA(Feuil1.Range("X:X")) Set PlageDeRecherche = Sheets(1).Cells 'Décalage mise en page For i = 7 To w + 4 Valeur_Cherchee = Sheets(1).Cells(i, 24).Formula Valeur_remplacement = Sheets(1).Cells(i, 28).Formula Set Trouve = PlageDeRecherche.Cells.Find(what:=Valeur_Cherchee, LookIn:=xlFormulas, LookAt:=xlWhole).Activate ActiveCell.Replace(Valeur_Cherchee, Valeur_remplacement, xlPart, xlByRows) 'gestion erreur If Trouve Is Nothing Then msgbox (Valeur_Cherchee + " " + "introuvable") Else AdresseTrouvee = Trouve.Address 'boucle pour prochain résultat de la recherche Do PlageDeRecherche.FindNext(After:=ActiveCell).Activate ActiveCell.Replace what:="Valeur_Cherchee", Replacement:="Valeur_remplacement", LookAt:=xlPart, SearchOrder:=xlByRows nb_remplacement = nb_remplacement + 1 Loop While Not Trouve Is Nothing msgbox (Trouve + " " + "remplacé" + nb_remplacement + "fois") End If Next i 'vidage des variables Set PlageDeRecherche = Nothing Set Trouve = Nothing End Sub
Merci pour votre aide et bonne journée
Partager