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
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
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
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
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
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