Modifier un chiffre dans une string

Bonjour, j'ai un problème sur le quelle je travail depuis 3 jours. Voilà mon problème.

j'ai un fichier excel qui a 90 pages dans le quelle il y a des centaines de formule. Les formules se réfèrent sur plusieurs pages. Je dois changer dans une page, une des formules qui se retrouve dans chaque cellule d'une ligne. Il y a 90 cellule par ligne. La formule est la suivante: ='# (4)'!H$2

Dans la formule, je dois changer le chiffre entre parenthèse. Qui n'est pas nécessairement le même d'une cellule à l'autre. La première section de la formule appelle une page soit :#(4) et la page change selon la formule.

Donc, en clair, dans un fichier VBA, je veux changer un chiffre d'une formule qui se répète dans des cellules et qui change régulièrement. Ma connaissance du VBA grandi de jour en jour mais je ne trouve pas ça évident. Il y a beaucoup de chose que je ne comprends pas et qui semble évident pour les gens qui connaissent le VBA. Je commence en VBA. J'ai regarder beaucoup de tutoriel et de forum mais je ne trouve pas.

Si vous pouvez m'aider, j'apprécierais grandement.

merci de votre aide.

Bonjour

Et avec un Recherche/Remplace (Ctrl + h)

Cherche : #(4)

Remplace : #(abc]

Sinon un fichier avec la page en cause et en y marquant ce que tu veux faire

Merci Banzai64, je me rends compte que je n'ai pas été assez claire. Désolé. Je connais la fonction "recherche/replace". Je veux faire cela dans une macro VBA en automatique. Je sais que je peux le faire avec la fonction recherche d'excel mais ça ne fonctionne pas dans ma macro parce que je veux l'incrémenter en automatique. C'est l'incrémentation qui fonctionne pas et l'automatisme. Je suis capable de sélectionner la page, la ligne et la cellule que je veux changer mais je bloque le chiffre qui doit être incrémenter et qui est comme je l'ai dit, jamais le même d'une cellule à l'autre. Je ne veux pas devoir changer manuellement toute les formules de la ligne.

J'espère que c'est plus clair.

merci

Bonjour, j'insère un fichier qui représente mon problème. Sur la page un, il y a des chiffres sur la première ligne qui viennent des pages 2 et 3. Je veux changer les formules en les incrémentant de 1 à chaque fois. Donc la formule ='# (2)'!B$2 deviendrait: ='#(3)'!B$2 et le tout en automatique car il y a 90 cellule par ligne environ.

merci de votre aide.

Quelqu'un m'a donné cette formule qui je crois devrais fonctionner mais il me manque quelque chose pour que ça fonctionne.

formule = [c10].formula

ParentheseDeb = InStr(1, formule, "(", 1)

ParentheseFin = InStr(1, formule, ")", 1)

NumFeuille = Mid(formule, ParentheseDeb + 1, ParentheseFin - (ParentheseDeb + 1))

Est-ce que ParentheseDeb et parenthesefin doivent être des variables? Numfeuille, c'est aussi une variable? si oui, comment on écris cela?

merci

formule = [c10].formula
ParentheseDeb = InStr(1, formule, "(", 1)
ParentheseFin = InStr(1, formule, ")", 1)
NumFeuille = Mid(formule, ParentheseDeb + 1, ParentheseFin - (ParentheseDeb + 1))
'mettre en C10 la formule où l'on remplace (x) par (x+1)
[C10].formula=replace(formule,"(" & numfeuille & ")", "(" & numfeuille+1 & ")")

Bonjour h2so4, merci pour la réponse mais ça ne fonctionne pas, j'ai un message: "erreur d"exécution "13" "incompatibilité de type"

Je ne comprends pas.

merci


désolé, j'ai fait une erreur dans le code, ça fonctionne très bien. Merci beaucoup. Je suis très content du résultat.

pourtant, lorsque je fais le test chez moi sur base des explications que tu as données cela fonctionne parfaitement.

sur quelle instruction est-ce qu'il y a un problème ? merci de joindre ton fichier

non ça fonctionne très bien, j'avais fait une erreur dans le code. Je ne comprends pas tout mais ça fonctionne et ça a régler un gros problème pour moi. Je te remercie beaucoup pour ton aide.

Bonjour, j'ai un nouveau problème avec ma formule. Comme je ne comprends pas tout à fait la logique, je ne suis pas capable de l'adapter. Elle fonctionne tant et aussi longtemps que ma formule reste identique mais une des formules est différente et ça ne fonctionne plus.

Ma fonction est la suivante: formule = ActiveCell.Formula

ParentheseDeb = InStr(1, formule, "(", 1)

ParentheseFin = InStr(1, formule, ")", 1)

numfeuille = Mid(formule, ParentheseDeb + 1, ParentheseFin - (ParentheseDeb + 1))

ActiveCell.Formula = Replace(formule, "(" & numfeuille & ")", "(" & numfeuille + 1 & ")")

et ma formule est : ='# (4)'!H$2 sauf qu'elle change à un endroit et deviens: =ARRONDI('# (4)'!L$18;1). Là ça ne fonctionne plus. J'ai fait une recherche sur internet pour "parenthese deb et fin" mais j'ai rien trouvé sur ce sujet. Si quelqu'un connais un tuto pour cela j'aimerais bien le regarder.

merci pour votre aide.

bonjour,

essaie ceci

Sub test()

formule = [C10].Formula
' parenthèseDeb= position du premier caractère de la chaine de caractères (unique) précédant le numéro de feuille
ParentheseDeb = InStr(1, formule, "'# (", 1)
' parenthèsefin= position du premier caractère de la chaine de caractères (unique) suivant le numéro de feuille
ParentheseFin = InStr(1, formule, ")'!", 1)
' 4 car j'ai utilisé 4 caractères pour être (quasi) sûr d'avoir une séquence unique de caractères pour identifier la position du numéro de feuille
numfeuille = Mid(formule, ParentheseDeb + 4, ParentheseFin - (ParentheseDeb + 4))
'mettre en C10 la formule où l'on remplace (x) par (x+1)
[C10].Formula = Replace(formule, "(" & numfeuille & ")", "(" & numfeuille + 1 & ")")
End Sub

Bonjour, merci beaucoup pour les explications. Je comprends mieux comment ça fonctionne. Merci pour le temps que vous avez pris pour m'aider.

Rechercher des sujets similaires à "modifier chiffre string"