Changer un nombre dans un formule string qui se répète de cellul

Résolu/Fermé
Utilisateur anonyme - 26 nov. 2013 à 17:14
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 - 2 déc. 2013 à 21:14
Bonjour,

J'ai une cellule qui a comme formule ='# (5)'!CR41
#(5) appelle la page 5 de mon classeur
CR41 appelle la case rechercher

Voilà mon problème:

il faut que je change la page pour chaque cellule
donc le 5 doit devenir 6, le 6 le 7, etc.

j'aimerais le faire en incrémentation automatique. J'ai essayé plusieurs chose mais rien ne fonctionne car c'est la formule que je dois changer et non le résultat de la formule.

Je suis débutant en VBA. J'ai commencer il y a deux semaines. Donc svp si vous pouvez expliquez vos lignes de code, j'apprécierais beaucoup.

merci


A voir également:

9 réponses

Utilisateur anonyme
26 nov. 2013 à 19:04
Bonjour, merci pour les réponses rapides. Mais comme j'ai écris, je suis débutant donc c'est un peu du chinois pour moi.

Si je comprends, "cptr" change le chiffre en nombre ?
cells (Lig, "A") c'est quoi "Lig", "A" viens d'ou?
le Range n'est jamais le même, on peut le remplacer par "*"?

Dernière chose, le chiffre n'est pas nécessairement 5 ou 7 ou 8, ça dépend de la page qui est appelée. Peut-on la aussi mettre "*"?

merci
1
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
Modifié par Polux31 le 26/11/2013 à 20:03
Bonjour,

Michel_m a précisé qu'il fallait l'adapter à ton cas ...

cptr est une variable qui va servir d'indice pour parcourir les feuilles de ton classeur (dans l'exemple, les feuilles 5, 6 et 7.

Cells([ligne],[colonne]) est une cellule d'une feuille qui est repérée par son numéro de ligne et colonne.
Dans n'importe quel tuto sur excel tu as ce genre d'info. Quand on travaille sur un outil mal connu, on fait un minimum de recherche pour comprendre comment ça fonctionne ...

Et non, "*" ne remplace pas n'importe quoi dans un code ...

On comprend que tu sois dans ton projet, mais pas nous. Tes explications sont confuses et les éléments que tu donnes ne sont pas suffisamment détaillés et précis pour qu'on puisse te donner plus de piste ou de solution.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié par michel_m le 27/11/2013 à 08:50
Bonjour,

Pour aller dans le sens de Polux de Toulouse(?) que je salue

Pour apprendre les rudiments de VBA
sites:
http://www.info-3000.com/
http://www.excelabo.net/accueil
etc.

tuto à télécharger
https://bidou.developpez.com/article/VBA/
à imprimer et garder sous le coude

Dis toi bien que tous les développeurs VBA-Excel et autres langages, quelque soit leur niveau, fouinent très souvent dans les tutos, astuces et les FAQ par ex
https://excel.developpez.com/faq/
tu as aussi des astuces sur CCM (cherche un peu sur ce site)

Mais avant toute chose, se souvenir de ce vieux proverbe ringard;
"un problème bien posé est à moitié résolu"
soit en patois informatique
écrire le système d'information (S.I.)

enfin dernier préchi-précha:
"avant de penser VBA , penser Excel"

bonne découverte et surtout, reste zen devant les nombreux bugs que l'on sait tous bien faire !
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
26 nov. 2013 à 17:51
Bonjour,

évite VBA et utilise la fonction INDIRECT !
=INDIRECT(A1&"CR41") en mettant en A1 le nom de la feuille.

A+
0
Utilisateur anonyme
26 nov. 2013 à 18:02
Bonjour, merci pour la réponse mais désolé, je ne sais pas quoi faire avec... Je mets quoi avant le = et comment j'incrémente en automatique? Je débute en VBA.

J'aimerais changer le numéro de page dans chaque cellule (mais pas la manière dont elle est inscrite). Il y a des centaines de cellules à changer. Chaque ligne comporte environ 50 cellules et j'aimerais pouvoir changer la page pour chaque cellule de chaque ligne. Une ligne est attribuée à une page.

Merci!
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
26 nov. 2013 à 19:21
Re,

C'est pour ça que je te proposais de te passer de VBA.
Connais-tu un peu les fonctions Excel ? En B1 écris la formule (qui commence donc par "=") proposée ci-dessous et en A1 le nom de l'onglet.

A+
0
Utilisateur anonyme
26 nov. 2013 à 19:30
OK, je travail à partir du VBA. Mon fichier est très complexe et je dois faire beaucoup de macro pour arriver au résultat rechercher. Je travail exclusivement à partir d'un fichier VBA que j'ai créer. Je ne travail pas dans excel. Mes résultats sont appliqués à mon fichier excel. Je n'ai pas pensé que c'était une formule excel. Je pense que la solution ci-dessous fonctionne mais je ne sais pas comment l'appliquer à mon fichier VBA.

merci
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié par michel_m le 26/11/2013 à 18:40
bonjour,
on peut utiliser des formules excel dans VBA, mais si on peut s'en passer...
a adapter

For cptr=5 to 7
Lig=2
cells(Lig,"A")=sheets(cptr).range("CR41")
Lig=Lig+1
next

Michel
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
29 nov. 2013 à 04:28
Bonjour
Oui, les termes "Formule, ParentheseDeb, ParentheseFin, NumFeuille" sont tous des variables.
Votre demande n'étant pas suffisamment claire aux yeux de tous, (pour vous, ça l'est suffisamment, mais vu de l'extérieur, ça ne l'est pas du tout). Je vous avais proposé de mettre un échantillon de votre fichier bien commenté (sans données personnelles) sur Cjoint.com pour que nous puissions bien en comprendre la structure, et ainsi vous fournir une réponse adapté, mais notre discussion a disparu du forum (une mauvaise manip sans doute).
Donc , je répète, si on ne veut pas tourner en rond, soit vous reformulez votre demande de façon qu'elle soit compréhensible par tous, soit vous déposez sur Cjoint.com un échantillon de votre fichier que vous aurez pris soin d'argumenté le plus clairement possible.
Ne vous inquiétez pas, dès que ce sera clair pour tout le monde, les réponses vont affluer.
Bonne journée.
cdllt
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
2 déc. 2013 à 21:14
Bonsoir
avec la cellule à incrémenter en A1
    Valeur = Range("A1").Value
PositionDiese = InStr(1, Valeur, "#", 1)
Range("A1").Value = Left(Valeur, 9) & CLng(Right(Valeur, Len(Valeur) - (PositionDiese))) + 1
cdlt
0
Utilisateur anonyme
28 nov. 2013 à 13:13
Bonjour, je n'ai toujours pas résolu mon problème. Donc je repose ma question.

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)

Donc, en clair, dans un fichier VBA, je veux changer un chiffre d'une formule qui se répète dans chaque cellule et qui change régulièrement. Ma connaissance du VBA grandi de jour en jour mais je ne trouve pas ça évident.à

merci de votre aide.
-1
Utilisateur anonyme
28 nov. 2013 à 21:38
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
-1
Utilisateur anonyme
2 déc. 2013 à 20:15
Merci pour la réponse. J'ai trouvé la solution à mon problème. Il me manquait une ligne pour que ça fonctionne. Mais j'ai encore un autre problème du même genre. Plus simple cette fois je crois.

j 'ai une cellule avec comme valeur: CHOIX eq#2

je veux incrémenter le chiffre à la fin seulement en automatique et en VBA, pas en excel. Je n'y arrive pas et je ne trouve pas de tuto qui explique comment faire pour incrémenter un nombre dans un texte.

La solution est probablement très simple. Dans excel, avec recherche/replace, c'est très facile.

merci de votre aide.
-1