Rechercher et remplacer selon conditions

Bonjour,

Je suis débutant en VBA et je cherche à l'utiliser pour automatiser mes excels. Je recherche une fonction pouvant détecter une chaîne de caractère dans une colonne déterminé, j'ai tenté avec instr mais excel m'a renvoyé un message d'erreur.

-Dans le cadre de mon travail, je dois souvent aller mettre à jour des liaisons dans plusieurs onglets différents. Pour le faire, je regarde la date de la dernière maj de l'onglet (par ex \02 - Février\) et je la remplaçais par celle du mois en cours(par ex vers \12 - décembre\ si on est en décembre).

Cependant comme c'est assez répétitif et long, j'ai pensé à l'automatiser.

En effet, les liens que je modifie sont du type :\x....\2019\04 - Avril\... 2019 01 05 - Maj.xslsx (2019 01 05 car on revoie les projets d'avril en mai, le temps d'avoir toutes les données) et sont toujours dans la colonne G.

Par conséquent ,pour les mettre à jour, il suffit juste que je rendre le mois de la dernière Maj dans "rechercher" et que je fasse "remplacer" par le mois que je désire.

La seule chose qui change c'est donc ce que je vais mettre dans le champ "rechercher", car chaque onglet a sa propre date de Maj. Le mois vers lequel je souhaite mettre à jour est TOUJOURS le même, il est invariable.

Par exemple si la dernière maj d'avril ,je ferai:

rechercher: "\04 - Avril\" et "2019 01 05 -MAJ.xslsx"

par

remplacer tout par: \12 - Décembre`" et 2020 01 01"

Puis je refais ça pour chaque onglet, et quand il y en a 30 c'est un peu long quand même

-J'ai donc pensé à écrire un code VBA, qui suivrait 3 étapes: d'abord aller dans les onglets à modifier(étape 1), ensuite détecter dans la colonne G le dernier mois de Maj(étape 2), puis faire un rechercher et remplacer approprié(étape 3).

Comme il y a 12 mois possibles, il suffirait juste d'indiquer dans le VBA : si mois janvier détecté quoi faire, si mois février quoi faire etc, et le rechercher et remplacer se ferait automatiquement.

Pour l'instant, j'ai réussi à coder l'étape 1 et 2 (aller dans le bon onglet, faire un rechercher et remplacer), mais je bloque sur créer la fonction qui détecterait le dernier mois de MAJ, je pense que je n'utilise pas la bonne fonction.

Le début de mon code renseigne le mois vers lequel je souhaite mettre à jour et les onglets qui seront modifiés :

Spoiler

Sub Test_Un_réel()

Dim YYY As Variant

YYY = "2019\12 - Décembre\"

Dim ZZZ As Variant

ZZZ = "2020 01 01 - Maj.xslx"

Sheets(Array("777")).Select)

Le second cherche alors à tester si \01 -Janvier\ existe dans l'onglet G, et si oui quoi faire, si non on test février etc jusqu'à détecter le bon mois(12 cas possibles donc car il existe 12 mois).

Pour m'aider, j'ai utilisé la fonction "If Instr" qui détecte les chaînes de caractère, afin de détecter dans la colonne G quel est le dernier mois de Maj.

Par exemple, si la fonction détecte que "\11- Novembre\" est dans la colonne G, alors la dernière maj date de novembre et mon rechercher et remplacer sera du type: rechercher :" \11 - Novembre\", remplacer par `"\12 - Décembre\".

Ensuite, j'ai donc tapé les 12 cas possibles afin que le recherche et remplacer sache quoi faire pour chaque mois.

Ici, j'ai copié coller un exemple que j'ai fais sur Novembre

Spoiler

If InStr(1, Range("G"), "*2019\11 - Novembre\*", vbTextCompare) <> 0 Then

Columns("G").Select

Selection.Replace What:="2019`\11 - Novembre\", Replacement:="YYY", LookAt:= _

xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2

Selection.Replace What:="2019 01 12 - MAJ.xlsx", Replacement:="ZZZ", LookAt:= _

xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2

end if

End Sub

Mais la fonction ne semble pas marcher, excel m'indique que if instr contient une erreur.

Du coup , je me demandais si j'avais fait une erreur sur la syntaxe ou s'il y avait des fonctions plus appropriées pour ce type d'opération que je pourrais étudier?

Rechercher des sujets similaires à "rechercher remplacer conditions"