XL 2016 Copie de tableaux n fois

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 !

ntb

XLDnaute Nouveau
Bonjour à tous,

Je souhaiterai Copier-coller un tableau à côté d'un autre un nombre de fois n, tout en conservant sa mise en forme. J'aimerai que les tableaux que je copie apparaissent à droite du précédent. Lorsque nous cliquons sur le bouton lié à la macro il nous est demandé le nombre de tableaux que l'on souhaiterai avoir en +. En fonction de ce nombr eje souhaiterai également qu'apparaissent le même nombre de tableaux. J'ai essayé de mettre en place une macro mais celle-ci ne fonctionne pas.

Si certains d'entre vous ont des solutions je suis preneuse 🙂

N'hésitez pas si vous avez des questions

Ci-joint le fichier

Merci 😉
 

Pièces jointes

Solution
Bonjour ntb

Une proposition toute simple a tester :
VB:
Sub NbTableaux()
    Dim n, P As Range, nlig, i
    Dim xCount As Integer
    
    n = Application.InputBox("Nombre de tableaux")
    Set P = Range("B4:D8")
    ncol = P.Columns.Count
    Application.ScreenUpdating = False
    For i = 1 To n - 1
        P.Copy P.Offset(0, i * ncol)
    Next
End Sub
Bonjour ntb

Une proposition toute simple a tester :
VB:
Sub NbTableaux()
    Dim n, P As Range, nlig, i
    Dim xCount As Integer
    
    n = Application.InputBox("Nombre de tableaux")
    Set P = Range("B4:D8")
    ncol = P.Columns.Count
    Application.ScreenUpdating = False
    For i = 1 To n - 1
        P.Copy P.Offset(0, i * ncol)
    Next
End Sub
 
Hello

avec ce code ca ira mieux
1) il faut déclarer le i comme un long
2) quand on fait un screenupdating = false au début, il ne faut pas oublier de le remettre à true en fin de code
3) le resize a besoin de deux arguments: Ligne et colonnes==> dans ton cas, on ne spécifie pas ligne, MAIS il faut mettre une virgule pour indiquer que l'argument mis correspond à colonne

VB:
Sub NbTableaux()
Dim n, P As Range
Dim nlig, i As Long
Dim xCount As Integer
Application.ScreenUpdating = False
n = Application.InputBox("Nombre de tableaux")
Set P = Range("B4:F9").EntireColumn

ncol = P.Columns.Count


Columns(ncol).Resize(, Columns.Count - ncol).Delete
For i = 1 To n - 1
    P.Copy Destination:=P.Offset(, i * ncol)
Next

Application.ScreenUpdating = True
End Sub
 
Bonjour ntb

Une proposition toute simple a tester :
VB:
Sub NbTableaux()
    Dim n, P As Range, nlig, i
    Dim xCount As Integer
   
    n = Application.InputBox("Nombre de tableaux")
    Set P = Range("B4:D8")
    ncol = P.Columns.Count
    Application.ScreenUpdating = False
    For i = 1 To n - 1
        P.Copy P.Offset(0, i * ncol)
    Next
End Sub
Super merci ça fonctionne 😉

Des petits détails qui changent tout ahaaa
 
Hello

avec ce code ca ira mieux
1) il faut déclarer le i comme un long
2) quand on fait un screenupdating = false au début, il ne faut pas oublier de le remettre à true en fin de code
3) le resize a besoin de deux arguments: Ligne et colonnes==> dans ton cas, on ne spécifie pas ligne, MAIS il faut mettre une virgule pour indiquer que l'argument mis correspond à colonne

VB:
Sub NbTableaux()
Dim n, P As Range
Dim nlig, i As Long
Dim xCount As Integer
Application.ScreenUpdating = False
n = Application.InputBox("Nombre de tableaux")
Set P = Range("B4:F9").EntireColumn

ncol = P.Columns.Count


Columns(ncol).Resize(, Columns.Count - ncol).Delete
For i = 1 To n - 1
    P.Copy Destination:=P.Offset(, i * ncol)
Next

Application.ScreenUpdating = True
End Sub
Merci beaucoup pour tes explications, je comprends mieux 😉
 
- 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

Retour