Bonjour a tous.
Une fois de plus, j'ai besoin de vos lumières.
J'essaye de faire une petite commande en vba mais je reste bloqué dans la formulation.
Je dispose d'une colonne (a) contenant la date et d'une colonne (b) contenant une formule assez longue. Pour plusieurs raisons, cette formule peux être effacée.
J'ai rempli les cellules (de b4 à b35) en étirant la formule de haut en bas.
Si par exemple, j'ai besoin d'effacer le contenu de b10 pendant un certain temps et pour la remettre plus tard, j'ai prévu pour faciliter l'utilisation entre autre, l'affichage d'un petit Userform dans lequel, j'ai un bouton qui devrait me permettre de remettre la formule d'origine dans la case b10.
Le code de ce bouton est celui-ci:
Code:
Sub RemiseZero ()
Set a= ActiveCell.Offset (0, 1)
Set b= ActiveCell.Offset (0, 2)
ActiveCell.AutoFill Destination:=Range ("a:b"), Type:=xlFillDefaut
End Sub
Je vous le donne en mille..... Ca ne fonctionne pas.
Auriez-vous une solution à me proposer et par la même m'expliquer pourquoi mon petit bout de code ne fonctionne pas?
D'avance merci et bonne journée à tous.
Si par exemple, j'ai besoin d'effacer le contenu de b10 pendant un certain temps et pour la remettre plus tard, j'ai prévu pour faciliter l'utilisation entre autre, l'affichage d'un petit Userform dans lequel, j'ai un bouton qui devrait me permettre de remettre la formule d'origine dans la case b10.
Le code de ce bouton est celui-ci:
Code:
Sub RemiseZero ()
Set a= ActiveCell.Offset (0, 1)
Set b= ActiveCell.Offset (0, 2)
ActiveCell.AutoFill Destination:=Range ("a:b"), Type:=xlFillDefaut
End Sub
quand tu utilises le formulaire tu veux qu'il fasse quoi ? Qu'il recopie dans ton exemple la FORMULE qui est en B11 pour la coller en B10 ?
ActiveCell.Offset (0, 2) copie la valeur (.value est la propriété par défaut d'un range et pas .formula)
Sans exemple pour tester quoi que ce soit... Difficile de rpondre plus en détail
j'étais en train de simplifier mon fichier (j'aurai dû le faire avant de poster, cela aurait été plus simple).
En faite, je voulais au départ que cela me recopie la formule mais elle est assez longue et je pensais faire plus simple en étirant soit dans un sens soit dans l'autre la formule dans la case à "refaire".
Ma formule est comme tu dis: "EXTRÊMEMENT LONGUE" mais c'est la seule solution que j'ai trouvée car il s'agit d'une recherche sur plusieurs tableaux avec renvoie d'une info suivant le mot recherché en D1. A savoir que j'ai quand même essayé de passer par une formule avec RECHERCHV mais cela ne passait pas.
De plus, pour ta formule, n'ayant pas déclaré les cellules concernées comme étant un tableau un simple copier coller ne peut fonctionner car je cherche plus a faire une incrémentation. Si je ne fais que le copier-coller j'aurai comme résultat celui de la cellule d'où provient la formule. Enfin dans ma tête c'est clair.....
Je n'ai pas déclaré les cellules comme étant un tableau... ou as tu vu cela ?
Tu dis que tu as en B1 ta formule "maître"
Si elle a les bons $ au bon endroit, quand tu la colles en B4:B34 elle doit s'adapter (ou pas si elle ne doit pas le faire, dans ce cas mets les $ pour figer les références dans la cellule B1).
L'exemple que tu as fournis est très léger pour comprendre ton problème j'ai fait ce que j'ai pu !
Pour tester j'ai mis = ligne() en B1 qui renvoie le N° de la ligne. Quand cette formule se colle en B4 elle renvoie ... 4
Tu parles d'incrémentation mais comme je ne vois pas ce que tu incrémentes et où je suis bien en peine de t'aider davantage. Chez oi en tous cas ligne() s'incrémente bien.
C'est peut être clair dans ta tête mais ma réponse ne te convient pas et pour le moment tu n'en n'as pas eu d'autre enfin si la question est claire pour toi et la réponse est claire pour moi, je ne suis pas sure que cela fasse pour autant un bon couple question/réponse !
Une proposition (selon ce que j'ai compris de la question)
Code VBA: PrivateSub RemiseZero_Click() Dim Ma_Formule$ 'Ici adapter avec la formule réellement utilisée Ma_Formule = "=ENT(LIGNE()*COLONNE()+MAINTENANT()*MOIS(AUJOURDHUI())*ALEA())"
[B4:B34].FormulaLocal = Ma_Formule EndSub
Bonjour Misange, Staple1600, le forum,
désolé pour mon délai de réponse.
Misange: Effectivement, je n'étais pas très clair dans mes explications mais ta réponse elle l'était. J'ai donc fais comme tu me le conseillais et bien entendu cela à fonctionné. Je pense que j'avais tellement la tête à ma super longue formule que je ne voyais plus trop les évidences. En tout cas, cela fonctionne donc merci.
Staple1600: Ce code m’intéresse aussi mais pas pour le même fichier. Ici, il permet de remettre à zéro toutes les cases d'un seul coup hors je cherchai à traiter chaque cellule indépendamment. Bien sur, en changeant un peu le code, il peut le faire. Mais, il fonctionne donc merci à toi aussi.