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

Recopie incrémenté jusqu'au bout d'un tableau (macro)

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Le double cheese

XLDnaute Occasionnel
Bonjour,

J'ai une tableau avec la formule =ligne() dans une colonne, et je souhaiterais créer une macro qui fasse la recopie incrémenté automatiquement (de la 1ère à la dernière ligne du tableau). Donc si j'insert une ligne dans mon tableau, il faut que la macro prenne en compte tout le tableau avec la ligne en plus.

petit fichier test ci-joint.

merci
 

Pièces jointes

Re : Recopie incrémenté jusqu'au bout d'un tableau (macro)

Bonjour john,

Merci,
Peut on adapter la macro pour une autre formule, par exemple =somme() ?


Ps: lorsque j'écrit dans une cellule de votre fichier et que je valide, la cellule active va automatiquement à la dernière cellule du tableau (un petit bug je pense)
 
Dernière édition:
Re : Recopie incrémenté jusqu'au bout d'un tableau (macro)

à la place de "=ROW()" tu tapes "=(SUM(RC[-1]:R[1]C[-1]))"

Tu ne peux pas juste entrer "=sum()", tu dois aussi entrer la cellule de départ et d'arrivée, ici j'ai fait A1 et A2 et c'est la cellule B2 qui fait la somme, donc si tu regardes bien la formule c'est d'abord le nombre de colonne avant ou après celle où tu te trouves (ici RC[-1] donc vu que je suis en B1 la formule pointe sur la colonne A1 ensuite, après les : tu as le nbr de Row (lignes) comprises pour faire la somme, en partant de A1 + 1 cellule ça fait A1 et A2 ==> somme de A1 et A2.

J'espère que je suis assez clair, mais pas évident d'expliquer avec des mots... mais il suffit d'enregistrer une macro et de faire des tests pour voir les résultats et comprendre le fonctionnement d'excel sous VBA.

BàT.

John
 
Re : Recopie incrémenté jusqu'au bout d'un tableau (macro)

Re,

C'est très claire, mais je ne pourrais pas l'adapter à mon document original, car la formule est bien plus complexe qu'une simple somme.

Cependant, peut-être que si je te donne la macro que j'ai fait, tu pourra me dire quoi changer:

Sub Macro1()
'
' Macro1 Macro

Selection.AutoFill Destination:=Range("F4:F56"), Type:=xlFillDefault
Range("F4:F56").Select
End Sub


A la place d'incrémenter la formule de F4 à F56, il faut qu'elle s'incrémente même si le tableau va jusqu'a F67 par exemple. ( En gros il ne faut pas que la macro se limite a un nombre de lignes de 4 à 56 , mais qu'elle prenne en compte toutes les lignes du tableau)
 
Re : Recopie incrémenté jusqu'au bout d'un tableau (macro)

Peux-tu me dire quel est le critère qui détermine la dernière cellule ??
Si tu veux, tu m'envois un exemple de ton fichier et j'adapterai (dans la colonne à coté indique le résultat que tu voudrai obtenir comme ça j'aurai un modèle et confirmation que tout est OK quand j'aurai fini).

BàT.

John
 
Re : Recopie incrémenté jusqu'au bout d'un tableau (macro)

La dernière cellule est simple à trouver, c'est la dernière cellule non-vide. (il n'y a rien en dessous du tableau)

Ok, je vais essayer de créer un fichier exemple.
 
Re : Recopie incrémenté jusqu'au bout d'un tableau (macro)

Ok...
Pour avoir la dernière cellule non vide pas de soucis
Range("A65536").Select 'si c'est sur la colonne A
Selection.End(xlUp).Select
ligne = ActiveCell.Row 'ça te donne la dernière cellule non vide
 
Re : Recopie incrémenté jusqu'au bout d'un tableau (macro)

Donc ma macro devient ceci: (en rouge c'est ce que je ne sait pas comment modifier)

Sub Macro1()
'
' Macro1 Macro
Range("A65536").Select
Selection.End(xlUp).Select
ligne = ActiveCell.Row
Selection.AutoFill Destination:=Range("A4:A56"), Type:=xlFillDefault
End Sub


Et j'ai fait un fichier exemple ci-joint.
 

Pièces jointes

Re : Recopie incrémenté jusqu'au bout d'un tableau (macro)

Re,

Je suis entrain d'adapter vos solutions à mon fichier original, ça à l'air de bien fonctionner, merci à vous !

Pierrejean, peut-on modifier la macro pour que la copie se fasse tout de suite lorsque l'on insert une ligne? (même avant de remplir la colonne B)
 
Re : Recopie incrémenté jusqu'au bout d'un tableau (macro)

Pierrejean, peut-on modifier la macro pour que la copie se fasse tout de suite lorsque l'on insert une ligne? (même avant de remplir la colonne B)


En fait j'ai trouvé:

Private Sub Worksheet_Change(ByVal Target As Range)
colonnes = Array("A", "C", "D", "E", "F", "O")
If Target.Rows.Count = Rows.Count Or Target.Columns.Count = Columns.Count Then For n = LBound(colonnes) To UBound(colonnes)
Range(colonnes(n) & Target.Row - 1).Copy Destination:=Range(colonnes(n) & Target.Row)
Next
End If
End Sub


Encore merci !
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
687
  • Question Question
Microsoft 365 Tableau
Réponses
5
Affichages
288
Réponses
10
Affichages
512
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…