[VBA] Défénition d'une plage variable dans un autofill

Verba_Tim

XLDnaute Occasionnel
Salut le fil :)
J'espère que vous allez bien ^^

Moi j'ai de nouveau un petit problème.

Je souhaite faire un autofill sur une plage variable, qui irait de ma première cellule à la dernière cellule non vide... J'ai trouvé pas mal de chose sur la façon de trouvé la dernière cellule non vide d'une colonne, comme ici, mais aucune d'entre elle n'a l'air de vouloir fonctionner avec mon autofill... -_-"
Auriez vous une idée de la façon de faire?? Ou est-ce tout simplement pas faisable?

L'autofill: Selection.Autofill Destination:=Range("X:X"), Type:= xlFillDefault


Merci d'avance :)


Au plaisir de vous lire,


VB_T


Edit: l'autofill sert a étendre une formule d'une cellule sur une plage donnée
 

Theze

XLDnaute Occasionnel
Re : [VBA] Défénition d'une plage variable dans un autofill

Bonjour,

Alors admettons que tu souhaite prolonger ta plage (ici toutes les cellules de la feuille "Feuil1") vers le bas du double de la plage actuelle, tu peux faire un resize :
Code:
Sub PlageAutoFill()

    Dim Plage As Range
    
    'recherche la dernière cellule utiliser de la feuille
    'équivalent à UsedRange mais UsedRange offre parfois des
    'surprises si on a pas mal bidouiller la feuille
    With Worksheets("Feuil1")
    
        Set Plage = .Range(.Cells(1, 1), _
                    .Cells(.Cells.Find("*", .[A1], -4123, , _
                    1, 2).Row, .Cells.Find("*", .[A1], -4123, , _
                    2, 2).Column))
                    
    End With
    
    'recopie vers le bas toutes les colonnes en multipliant par deux
    'le nombre de lignes (ici c'est pour l'exemple) on est sensé savoir
    'de combien de lignes ou souhaite recopier
    Plage.AutoFill Plage.Resize(Plage.Rows.Count * 2, Plage.Columns.Count)
    
    'même façon pour les colonnes
    'Plage.AutoFill Plage.Resize(Plage.Rows.Count, Plage.Columns.Count * 2)
    
    Set Plage = Nothing

End Sub

Hervé.
 

Verba_Tim

XLDnaute Occasionnel
Re : [VBA] Défénition d'une plage variable dans un autofill

Salut These, Kjin :) le fil :)
... Bé si tu pense au fait que ma dernière cellule non vide peu être à la ligne 1000 comme à la ligne 20000 je pense que ça à du sens... non?
La première cellule est fixe, mais la position de la dernière non... et comme je ne souhaite pas étendre ma formule jusqu'à la 100 000eme ligne (parrait que c'est "pas top") , et bien je voudrais l'étendre jusqu'à une valeur x qui représenterai la dernière ligne.
J'ai pensé au Countif mais ça marche avec un paramètre qui ne change pas... A moins peu être de l'adapter en contant le nombre de cellule contenant "*"?
A tester...
En tout cas Kjin je pense que ma question avait bien un sens ^^" peu être pas assez concis, mais ayant tout de même un sens.
These merci de ta proposition, mais le fait est que les variations de taille de mon fichier peuvent être énorme (d'une centaine de ligne jusqu'à des dizaines de milliers de lignes...) Donc je pense que l'intérêt de ta formule (dans mon cas) est discutable (mais dans un autre cas elle peux être tout a fait adapté hein ;) ).

Je test le countif et je vous dit quoi ^^


Au plaisir de vous lire,


VB_T



(Manger m'a donner de l'inspiration ^^)
 

kjin

XLDnaute Barbatruc
Re : [VBA] Défénition d'une plage variable dans un autofill

Re,
En tout cas Kjin je pense que ma question avait bien un sens
Sans doute pour toi mais pas le lecteur !
Par définition une cellule vide contient qq chose, doit-on s'assoir dessus !?
En outre, si la première cellule est A1 la dernière est D5, tu ne précises nullement , si seule la cellule A1 doit être recopiée en A1: D5 !
A+
kjin
 
Dernière édition:

Verba_Tim

XLDnaute Occasionnel
Re : [VBA] Défénition d'une plage variable dans un autofill

Re,
-_- Si tu joue sur les termes aussi... ;) (en plus tu t'assoie sur ce que tu veux >> cela ne me regarde pas x) )
Donc en effet je cherche le nombre de cellule qualifié de non vide par Excel.
La méthode Application.Countif(Range("E:E"), "*") fonctionne... j'ai mon nombre de cellule "non vide". Mais l'Autofill ne fonctionne pas encore avec... je triture la chose pour voir si j'arrive à le faire fonctionner ^^

A+


VB_T
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : [VBA] Défénition d'une plage variable dans un autofill

Bonjour Verba_Tim, Theze, bonjour kjin :),
Une autre forme sans Autofil.
La formule à propager est en B2, la derniére ligne dans la colonne A.
VB:
Private Sub CommandButton1_Click()
Dim LstRow&
LstRow = Cells(Rows.Count, 1).End(xlUp).Row
Range(Cells(2, 2), Cells(LstRow, 2)).FormulaLocal = Cells(2, 2).Formula
End Sub

Cordialement
 

Pièces jointes

  • Verba_Tim(1).xls
    21.5 KB · Affichages: 245

Verba_Tim

XLDnaute Occasionnel
Re : [VBA] Défénition d'une plage variable dans un autofill

Salut Efgé :)
Mais ça m'a l'air pas mal du tout ^^ en tout cas en démo c'est alléchant ;)

Je test et je te dit ^^

Mercii

Cordialement,


VB_T



Edit: En train de ce battre avec...
 
Dernière édition:

Verba_Tim

XLDnaute Occasionnel
Re : [VBA] Défénition d'une plage variable dans un autofill

Re!
Ca y est ^^ je suis venu j'ai vu ta proposition, et j'ai vaincu la formule!!! x)
J'ai réussi à l'adapter à mon cas ^^

Pour ceux que ça intéresse:
Code:
Private Sub CommandButton1_Click()
Dim LstRow&
LstRow = Cells(Rows.Count, 1).End(xlUp).Row
Range(Cells(2, 2), Cells(LstRow, 2)).FormulaLocal = Cells(2, 2).Formula
End Sub
En décomposant (d'après ce que j'ai compris)

Range({cellulecontenant la fomule}Cells(Ligne,Colonne), {plage à traité}Cells(LstRow, colonne)).formula = {cellulecontenant la fomule}Cells(Ligne,Colonne).formula


Merci encore à ceux qui m'ont aider,
(même à Kjin (voir surtout à Kjin) qui m'a apporté une critique constructive!)



@ +!


VB_T
 
Dernière édition:

Lison Lisette

XLDnaute Nouveau
Bonjour!

Super astuce :) merci

Chez moi ça fonctionne avec une formule simple du style "=B2+B3" mais ça ne fonctionne pas avec une formule complexe crée sous VBA ...que j'appelle avec =MAFORMULESPECIALE(paramètre1;paramètre2;paramètre3).

Pourtant quand je double clique sur la case, manuellement, la formule se copie parfaitement bien...

Quelqu'un saurait m'aider ?
Merci d'avance
 

Dranreb

XLDnaute Barbatruc
Bonsoir.
Attention à ne pas se tromper de propriété, selon la notation:
Notation A1 française —› .FormulaLocal
Notation A1 native —› .Formula
Notation R1C1 —› .FormulaR1C1
Notation L1C1 —› .FormulaR1C1Local

Inutile d'utiliser AutoFill, une formule peut se mettre d'un coup à toute une colonne d'une plage.
 

Discussions similaires

Statistiques des forums

Discussions
312 176
Messages
2 085 959
Membres
103 065
dernier inscrit
HB ARPF 95