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

XL 2016 Copie de tableaux n fois

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

  • Test-Copie-Tableaux.xlsm
    17.7 KB · Affichages: 15
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

Fred0o

XLDnaute Barbatruc
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
 
Réactions: ntb

vgendron

XLDnaute Barbatruc
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
 
Réactions: ntb

ntb

XLDnaute Nouveau
Super merci ça fonctionne

Des petits détails qui changent tout ahaaa
 

ntb

XLDnaute Nouveau
Merci beaucoup pour tes explications, je comprends mieux
 

Discussions similaires

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