macro: plage variable & application formules

  • Initiateur de la discussion Initiateur de la discussion skun
  • 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 !

skun

XLDnaute Occasionnel
Bonjour le forum, et bon début de semaine

J'ai enregistré une macro qui a pour but de recopier des formules sur une plage définie.
Or la plage étant variable, j'aimerai que la macro agrandie ou réduise la taille de son champ d'application (sur la collone F) en fonction de la taille de la plage (de la collonne A).

Ceci est plus détaillé dans mon exemple.

Cependant, j'ai un autre problème:
j'utilise beaucoups de formules de recherche (index/equiv) dépendant les unes des autres et se référant à une autre feuille. Et il se trouve que j'ai des messages d'erreur qui se répettent car je pense que ca fait un effet de "boucle" et que ca ne s'arrete jamais de chercher.Et vu le nombre de formules qu'il y a dans mon tableau ca me pose un petit soucil.

J'aimerai savoir si il est possible de commander une macro pour utiliser une formule comme je souhaite faire plus haut (en gardant ce genre de commande dans le code: "=RC[-1]+RC[-2]") , mais en ne laissant que le résultat dans la cellule, afin d'éviter les que la formule soit en constant "recalcul" ?

Je vous remercie

skun
 

Pièces jointes

Re : macro: plage variable & application formules

Bonjour,

Désolés de ne pas avoir répondu hier, j'ai du déco tôt.

Bon j'ai éssayé re-essayé avec l'enregistreur de macro, je pense que la formule est bonne, j'en suis même casi-certain.

Le problème c'est que je trouve pas la commande pour Ctrl + Shift + Entrée.
J'ai fouiller un peu, je suis tombé sur plusieur technique j'ai essayé, ca a pas marché.

Si quelqu'un a une idée de comment je peux activer ma formule sachant que c'est une c'est une formule type index/equiv et aparament , .formulaArray ne marche pas pour ce type de formule (de ce que j'ai lu, rien de sur..)


Code:
Sub Test2()
With Range("A10:" & Range("A65536").End(xlUp).Address).Offset(0, 10)
.Formula = "=IF(OR(AND(R1C1<>""xxx"",R[3]C[-8]=""""),(R[3]C[-8]="""")),"""",IF(R1C1=""xxx"",MAX(([Test.xls]Feuil1!R2C3:R65536C3=R1C2)*(([Test.xls]Feuil1!R2C2:R65536C2+[Test.xls]Feuil1!R2C1:R65536C1)<=(R[1]C[-10]+(R[1]C[-6]+0.5/24)))*([Test.xls]Feuil1!R2C1:R65536C1+[Test.xls]Feuil1!R2C2:R65536C2)),MAX(([Test.xls]Feuil1!R2C3:R65536C3=R[1]C[-8])*(([Test.xls]Feuil1!R2C2:R65536C2+[Test.xls]Feuil1!R2C1:R65536C1)<=(R[1]C[-10]+(R[1]C[-6]+0.5/24)))*([Test.xls]Feuil1!R2C1:R65536C1+[Test.xls]Feuil1!R2C2:R65536C2))))"
.Value = .Value
End With
End Sub

merci à vous
 
Dernière édition:
Re : macro: plage variable & application formules

Bonjour Skun

essaye peut être en utilisant la méthode "autofill", tu envoie ta formule matricielle dans une cellule et celle ci est recopiée dans la plage spécifiée...

Code:
With Range("K10")
    .FormulaArray = "=RC[-1]"
    .AutoFill Destination:=Range("K10:K" & Range("A65536").End(xlUp).Row), Type:=xlFillDefault
End With

la formule est à modifiée, mais fais peut être un test au préalable avec une formule basique...

bonne journée
@+
 
Re : macro: plage variable & application formules

Bonjour Pierrot93,

J'ai honte mais je n'y arrive vraiment pas 🙁 meme en utilisant le code tel quel dans une nouvelle feuille..
je comprend vraiment pas, j'ai l'impression que FormulaArray est incompatible enfin j'en sais rien ...

J'ai tout d'abord essayé en rentrant ma formule à la place de la formule basic de ton code, là ca m'a surligné FormulaArray , ensuite j'ai remplacer par une formule basic, et là ca ma surligné Autofill... (j'ai surement dûe me trompé dans la destinnation car ca n'a pas la meme structure que
Code:
With Range("A10:" & Range("A65536").End(xlUp).Address).Offset(0, 10)

et ensuite j'ai crée une nouvelle feuille utilisé la formule directement que tu m'a linké, ca a buggué encore... je comprend vraiment pas 🙁


je vais continué de chercher.. je te remercie en tout cas pour l'intérêt que tu portes à mon problème.

si tu as une idée de pourquoi ca bug? ^^

salutations


A+

skun
 
Re : macro: plage variable & application formules

Bonjour,

Apres quelques essais, effectivement la formule matricielle ne veut pas passer, peut etre une limite liée par sa taille ou sa complexité.
Cependant, étant donné que tu veux faire une macro pour finalement mettre la valeur sans formule dans les cellules, une bonne solution serait peut etre de calculer la valeur dans la macro et de la coller directement dans le fichier .. non ?
 
Dernière édition:
Re : macro: plage variable & application formules

Bonjour Catrice,

Si j'ai bien compris, ton idée me parrait super, mais est ce que ce serrait réalisable en gardant la forme :
Code:
"=IF(OR(AND(R1C1<>""xxx"",R[3]C[-8]=""""),(R[3]C[-8]="""")),"""",IF.......

car j'ai encore plusieurs formules de ce type à automatiser en macro, donc ce serrait l'idéal.

Par contre je ne sais pas trop comment faire.


Merci pour vos conseils


skun
 
Dernière édition:
Re : macro: plage variable & application formules

Bonsoir,

Ci-joint une solution qui se rapproche de ce que tu souhaites (garder la forme des formules) et qui recupere les valeurs des formules en lieu et place de ces dernieres.

J'ai créé dans le fichier exemple.xls des noms variables (CTRL+F3 pour voir) Data, ColA, ColB etc...

Data correspond à toutes les données de Test.xls (A2:G28 dans l'exemple)
ColA les données de la colonne A (A2:A28 dans l'exemple)
ColB les données de la colonne B (A2:A28 dans l'exemple)
Etc ..

Ces noms évoluerons en fontion des données saisies dans Test.xls.

Dans ce cas de figure :
- on peut simplifier les formules matricielles
- les macros autorisent leur gestion

Les formules matricielles sont stockées dans la macro et ecrites dans les cellules de la ligne 10.
Puis recopiées vers le bas à concurrence du nb de ligne dans la colonne A.
Et enfin, un copier/collage special valeurs ecrase les formules.

Test.xls doit etre ouvert.
 

Pièces jointes

- 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
3
Affichages
554
  • Question Question
Microsoft 365 Macro VBA
Réponses
1
Affichages
397
  • Question Question
Microsoft 365 Formules
Réponses
2
Affichages
665
Réponses
2
Affichages
552
Retour