Rechercher remplacer dans excel

[Résolu/Fermé]
Signaler
-
Messages postés
10126
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
26 septembre 2021
-
Bonjour,

J'ai besoin d'un petit coup de pouce sur excel car après avoir parcouru beaucoup de forum sur le net, je n'ai pas encore trouvé la formule magique dans excel pour faire ce que je veux.


Je cherche en gros à utiliser le principe de fonction dans excel, sans utiliser la forme function dans vba (je veux pouvoir modifier mes fonctions directement dans excel).


J'ai une feuille nommée "parametres" qui en gros contient 2 colonnes : une colonne "nom du paramètre" (pour le décrire) et une colonne "valeur". Toutes les cellules de la colonnes "valeur" ont un nom attribué (au lieu de "B5", j'ai "duree_projet" par exemple).


Une seconde feuille "projet" qui contient des archives de la première feuille "parametre", avec une colonne nom identique, et plusieurs colonnes de valeurs, pour chaque projet. Là aussi, chaque valeur possède un nom, avec la même syntaxe que dans la feuille paramètre mais avec un suffixe, du genre : duree_projet_A pour le projet A.

Une troisième feuille nommée "fonction", avec là aussi 2 colonnes : une de "nom" et une de valeur. Les cellules de la colonne "valeur" contiennent des formules de calculs qui utilisent les nombres entrés dans la première feuille "parametre" du genre "=5+duree_projet/3"


Enfin, j'ai une quatrième feuille, nommée comparaison, qui comporte une colonne "nom" identique à celle de la feuille fonction, mais avec plusieurs colonnes dont les cellules contiennent les valeurs de plusieurs projets différents. Chaque cellule de ces colonnes reprend les formules de la feuille fonction mais avec les paramètres spécifiques à chaque projet, dont les valeurs sont dans la feuille "projet".


J'aimerai que quand je modifie une formule dans la feuille "fonction", elle soit automatiquement modifiée dans la feuille "comparaison" pour chaque projet. J'ai essayé d'utiliser des macros, les fonctions remplacer, substitue mais rien n'y fait, je n'arrive pas à modifier le contenu d'une formule.


J'espère que j'ai été assez clair, pas facile d'expliquer ce qu'on veut !
Merci de votre aide !



5 réponses

Messages postés
10126
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
26 septembre 2021
2 208
bonjour

un bout de code qui modifie automatiquement une formule en feuill 2 lorsqu'on modifie une formule en feuille 1
la formule f récupérée à l'adesse c de la feuille 1, est une chaine de caracteres (type string) que tu peux modifier comme tu veux (dans les limites légales) avant de la recopier dans une cellule de la feuille 2
ici, j'ai fait simple, f ne change pas et la cellule a la même adresse

Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As String, f As String
  If Not Intersect(Target, Range("C1:C10")) Is Nothing Then
    c = Target.Address
    f = Range(c).Formula
    Sheets("Feuil2").Range(c).Formula = f
  End If
End Sub

bonne suite
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 42674 internautes nous ont dit merci ce mois-ci


Merci de ta solution ! Je vais étudier ça de près.

Euuh avec toute ma bonne volonté, je n'arrive pas à appliquer ce code. Comment fais tu pour dire à excel que tu veux que la macro s'applique à telle cellule de la feuil1 ? Autrement dit, comment lui dire que Target = cellule B2 de la feuil1 ? (je suis nouveau en vba :p)
Messages postés
4239
Date d'inscription
lundi 20 avril 2009
Statut
Contributeur
Dernière intervention
12 septembre 2014
1 284
Dans la ligne
If Not Intersect(Target, Range("C1:C10")) Is Nothing Then


Range("C1:C10") indique la plage de cellule qui sera affectée par la macro.

Du coup, il te faut remplacer cette plage de cellule par celle que tu voudras modifier.

Cordialement.
Messages postés
10126
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
26 septembre 2021
2 208
re
pour compléter les explications de chossette9

If Not Intersect(Target, Range("C1:C10")) Is Nothing Then
se lit
si Target (la cellule qui vient d'être modifiée) appartient à la plage C1:C10 alors ....
avec ceci, si une cellule de la plage C1:C10 change, alors ....
bonne suite

Coucou, juste pour vous annoncer que j'ai terminé la macro que je voulais faire en utilisant le code de ccm81 qui marche impec !

Merci à vous tous ;)
Messages postés
4262
Date d'inscription
lundi 18 décembre 2006
Statut
Membre
Dernière intervention
1 juin 2020
561
Salut !

Dans excel tu selectionnes tout ton tableau ,
ensuite tu fais édition atteindre formules
donc toutes tes formules sont sélectionnées
et ensuite remplacer le nom d'une feuille par une autre
et remplacer tout .

C' est tout ce que je vois dans Excel même
ma version d 'excel est ancienne mais tu dois avoir la même chose dans une version plus récente
Messages postés
54726
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
26 septembre 2021
16 614
Bonjour.

Quand on définit le nom d'une plage (ou d'une cellule), on a le choix de l'option "Dans le classeur / la feuille ...".

Quand on duplique une feuille contenant un nom de plage, Excel demande si le même nom peut être utilisé / si la valeur de la plage indiquée doit être utilisée dans la nouvelle feuille ...

En espérant que ça pourra t'être utile.
Je ne savais pas ça, mais en fait, je ne peux pas utiliser l'astuce de la duplication de feuille car j'ai un peu simplifié le problème. Les feuilles "fonction" et "comparaison" sont assez différentes en fait.

Je pense qu'il n'y a pas d'autre moyen que de passer par une macro.

Je pense que je vais simplifier mon problème et vous poser une question plus simple :

Comment à travers une macro excel, faire pour :

- rechercher dans le corps d'une formule un ou plusieurs mots situé dans une colonne de cellule

- les remplacer par d'autres mots issus d'une autre colonne de cellule de même taille
Messages postés
10126
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
26 septembre 2021
2 208
re
bien, il ne te reste plus qu'à mettre le pb à Résolu
bonne fin de journée