macro: plage variable & application formules

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

  • Exemple1.xls
    28.5 KB · Affichages: 132
  • Exemple1.xls
    28.5 KB · Affichages: 140
  • Exemple1.xls
    28.5 KB · Affichages: 139

skun

XLDnaute Occasionnel
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:

Pierrot93

XLDnaute Barbatruc
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
@+
 

skun

XLDnaute Occasionnel
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
 

Catrice

XLDnaute Barbatruc
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:

skun

XLDnaute Occasionnel
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:

Catrice

XLDnaute Barbatruc
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

  • Test.zip
    17.8 KB · Affichages: 30
  • Test.zip
    17.8 KB · Affichages: 31
  • Test.zip
    17.8 KB · Affichages: 31

Discussions similaires

Statistiques des forums

Discussions
315 133
Messages
2 116 604
Membres
112 802
dernier inscrit
Dan Marc