XL 2010 Autofill au départ d'une cellule variable

Xwell

XLDnaute Nouveau
Bonjour à tous,

J'ai une problématique qui pour vous pourrez sembler simple, mais vu mon niveau assez compliqué.
Voici le problème:
J'ai un fichier que je dois approvisionner tous les mois et en tant que bon flemmard je cherche des solutions pour l'automatiser.
Aussi je cherche à faire un autofill dynamique au départ de la dernière cellule non vide de la colonne B (donc variable) jusqu'à la dernière cellule non vide de la colonne A.
En réalité je compte faire ce processus pour toutes les colonnes qui ne vont pas jusqu'en bas.

Vous remarquerez qui il a des formules sur la ligne 13 du fichier ce sont donc ces formules que souhaite faire glisser jusqu'en bas.

Merci pour votre temps
Bonne journée à tous
 

Pièces jointes

  • Exemple.xlsx
    241.6 KB · Affichages: 6
Solution
au vu de ton code vu que t'as des formule différente par colonne, traité chaque colonne semble OK
par contre au leiu de faire uniquement la formule sur 1 Cellule fait ta formule directement sur la plage de cellules complète. Sélectionne la plage puis colle la formule à la selection.

pour ta colonne B, par exemple :

VB:
'Formule colonne B

Dim k As Long
k = Range("B" & Rows.Count).End(xlUp).Row + 1
Range("B" & k & ":B" & Range("A" & Rows.Count).End(xlUp).Row + 1).Select
Selection.FormulaR1C1 = "=IFERROR(IF(MATCH(RC[-1],C[-1],0)=ROW(),1,""""),"""")"

'Selection.AutoFill Destination:=Range("B2:B" & Range("A" & Rows.Count).End(xlUp).Row)

à essayer :)

edit : Ps : je n'ai pas pu exécuter le code dans son ensemble puisque qu'il...

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Pourquoi ne pas utiliser un tableau structuré, comme semble-t-il, vous aviez commencé à le faire ?
Par contre les formules dans les colonnes devront être homogènes.

Sinon en double cliquant sur le petit carré noir en bas à droite de la marquise de sélection des cellules, cela le fera :
1655216537637.png


Il suffit qu'il y ait une colonne à gauche ou à droite de la sélection qui soit remplie.

cordialement
 
Dernière édition:

Xwell

XLDnaute Nouveau
Bonjour Hasco,

Merci Hasco pour votre réponse

C'est vrai que cela pourrait être beaucoup plus simple, mais enfaite cela n'est pas la finalité de ma formule VBA car je souhaiterais ensuite copier coller en valeur afin d'alléger au max le fichier qui ici fait quelques centaines de lignes mais qui en réalité en fait plusieurs milliers (50000 environs).
Cliquer 2 fois sur le petit carré noir m'obligerais à mettre fin à la macro pour ensuite la continuer.
Et je ne l'explique pas mais lorsque j'utilise: (" Dim i as long : i = range("A" & rows.count).end(xlup)+1") sur un tableau structuré, cela me revoit sur la cellule sous le tableau ... voilà pourquoi j'ai décidé de ne pas l'utiliser.


Cordialement
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Alors avec le premier fichier j'avais fait ceci avant d'aller faire un tour:
Sub TotoPhil()
Dim Debut As Range, Fin As Range
With ThisWorkbook.Sheets("Feuil1")
Set Debut = .Range("B" & Rows.Count).End(xlUp)
Set Fin = .Range("B" & .Range("A" & Rows.Count).End(xlUp).Row)
If Fin.Row > Debut.Row Then Debut.AutoFill .Range(Debut, Fin), xlFillDefault
End With
End Sub

L'important dans AutoFill est que la plage Destianation (.Range(Debut,Fin) contienne la plage Source (Debut)

A vous de voir comment vous voulez l'adapter à votre cas. Sachez que la plage source peut contenir plusieurs colonnes et/ou lignes

Liste des types (deuxième argument) autofill :

Cordialement
 

Deadpool_CC

XLDnaute Accro
au vu de ton code vu que t'as des formule différente par colonne, traité chaque colonne semble OK
par contre au leiu de faire uniquement la formule sur 1 Cellule fait ta formule directement sur la plage de cellules complète. Sélectionne la plage puis colle la formule à la selection.

pour ta colonne B, par exemple :

VB:
'Formule colonne B

Dim k As Long
k = Range("B" & Rows.Count).End(xlUp).Row + 1
Range("B" & k & ":B" & Range("A" & Rows.Count).End(xlUp).Row + 1).Select
Selection.FormulaR1C1 = "=IFERROR(IF(MATCH(RC[-1],C[-1],0)=ROW(),1,""""),"""")"

'Selection.AutoFill Destination:=Range("B2:B" & Range("A" & Rows.Count).End(xlUp).Row)

à essayer :)

edit : Ps : je n'ai pas pu exécuter le code dans son ensemble puisque qu'il fait référence à plein de chose qui ne sont pas dans le fichier exemple (ce qui est compréhensible)
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 730
Messages
2 081 981
Membres
101 855
dernier inscrit
alexis345