[Résolu] activecell.offset et autofill

emsylvin69

XLDnaute Junior
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.
 
Dernière édition:

Misange

XLDnaute Barbatruc
Re : activecell.offset et autofill

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
.

Bonjour

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
 

emsylvin69

XLDnaute Junior
Re : activecell.offset et autofill

Bonjour à tous les deux.

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".
 

Pièces jointes

  • EssaisEffacement.xlsm
    21 KB · Affichages: 58

Misange

XLDnaute Barbatruc
Re : activecell.offset et autofill

En fait ce simple code suffit
Code:
Private Sub RemiseZero_Click()
Range("B1").Copy Destination:=Range("B4:B34")
Unload Opt
End Sub

mais ta formule me parait extrêmement longue et répétitive.... ;)
 

emsylvin69

XLDnaute Junior
Re : activecell.offset et autofill

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.....
 

Misange

XLDnaute Barbatruc
Re : activecell.offset et autofill

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 !
 

Staple1600

XLDnaute Barbatruc
Re : activecell.offset et autofill

Bonsoir à tous

Une proposition (selon ce que j'ai compris de la question)
Code VBA:
Private Sub 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
End Sub




EDITION: Bonsoir Misange ;)
 

emsylvin69

XLDnaute Junior
Re : activecell.offset et autofill

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.

Bonne journée à tous.
 

Discussions similaires