Macro de remplacement dans une formule

  • Initiateur de la discussion Initiateur de la discussion Blafi
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Blafi

XLDnaute Occasionnel
Bonjour à tous,

Pour faire suite à ma demande d'hier qui ne semble pas avoir recueilli beaucoup de succès (formule compliquée ou TCD ?), j'ai travaillé sur mon tableau très compliqué et qui nécessite de recopier des formules en changeant à chaque fois les numéros de colonne, entre autres ...

Ainsi dans le fichier joint, j'ai une formule du genre =SOMMEPROD(($C$5:$C$35="C")*(MOIS($F$5:$F$35)=1)*($M$5:$M$35="x")).

Je dois recopier cette formule vers le bas et changer, par exemple le $M$5:$M$35 par $N$5:$N$35 et ainsi de suite avec O, P, etc..

J'envisageais d'écrire une macro qui :
- rechercherait dans les formules de ma ligne (est-ce possible ?) les M
- remplacerait les M trouvés par des N
-recollerait la formule
- passerait à la cellule suivante..

J'ai commencé à écrire une boucle "for each cél in selection..." et essayé d'utiliser "Replace..." mais je n'arrive pas à dire à VBA de chercher dans la formule contenue dans la cellule sélectionnée et de remplacer le M par un N par exemple...

Comment alors demander à VBA de chercher, dans la formule contenue dans une cellule, une lettre et de la remplacer par une autre ??

Merci de votre aide et à bientôt..
 

Pièces jointes

Re : Macro de remplacement dans une formule

bonjour

je crois n'avoir pas tout compris, même avec le fichier (pas de donnée, pas de résultat)

m'enfin en fonction de ce que j'ai saisi..

decaler : tu commences ta formule en ligne 3, et tu desires decaler en fonction de la ligne la colonne de traitemement
Code:
=DECALER($M$5:$M$35;0;ligne()-3)
tu mets donc en D3 :
Code:
=SOMMEPROD(($C$5:$C$35="C")*(MOIS($F$5:$F$35)=1)*(DECALER($M$5:$M$35;0;ligne()-3)="x"))
et tu tires vers le bas
 
Re : Macro de remplacement dans une formule

re,

Merci Wilfrid pour ta réponse. En fait je n'ai mis dans mon fichier que la ligne de cellule avec les formules que je souhaite recopier à un autre emplacement en dessous et en changeant la référence des colonnes... donc, ta solution de décaller ne va pas marcher...

J'ai trouvé sur ce forum une petite macro qui me permet de remplacer dans chaque formule une référence de colonne par celle que je veux. Je l'ai un peu aménagée afin que VBA pose la question de savoir ce qu'on veut remplacer et de ce qu'on veut mettre à la place.

il faut naturellement traiter ligne par ligne.. mais ça marche...

Ci-dessous ma macro si ça peut servir à quelqu'un:

Dim Aremp, Rempar

Public Sub Rempla()

Aremp = InputBox("remplacer quoi ?", "remplacement dans formule")
Rempar = InputBox("remplacer par quoi ?", "remplacement par dans formule")

For Each cécé In Selection
cécé.Select
Selection.Replace What:=Aremp, Replacement:=Rempar, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Next cécé

End Sub


Merci et à ++
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
204
Réponses
5
Affichages
64
  • Question Question
XL 2021 formule
Réponses
3
Affichages
283
Réponses
5
Affichages
341
  • Question Question
Microsoft 365 Aide Excel formule
Réponses
4
Affichages
341
Retour