Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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 :


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
 

Xwell

XLDnaute Nouveau
Bonjour,

Voici le .xlsm encore une fois je suis plus que novice alors j'ai fait les formules avec ce que je sais faire, voilà pourquoi il y a beaucoup de répétition.
 

Pièces jointes

  • Exemple.xlsm
    269.8 KB · Affichages: 3

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Alors avec le premier fichier j'avais fait ceci avant d'aller faire un tour:

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…