Bonjour à tous,
Je suis novice en la matière et cherche une solution à un petit problème de code.
J'ai récupéré une partie de ce code sur un forum et je coince dans la solution.
Tout ce passe correctement jusqu'a la selection de la feuille, mais je n'arrive pas a coller le tableau.(message d'erreur sur la ligne "selection.paste")
Aprés avoir fait plusieurs essais je viens demander votre aide.
Merci à tous
Private Sub copier_Click()
Dim chemin As String
Dim i As Integer
Dim TopPos As Integer
Dim SheetCount As Integer
Dim PrintDlg As DialogSheet
Dim CurrentSheet, FeuilleDépart As Worksheet
Dim cb As OptionButton
' selectionne le tableau
Workbooks("RAPPORTS.xls").Sheets("production generale").Activate
Sheets("production generale").Range("A4:V59").Select
Sheets("production generale").Range("A4:V59").Copy
' boite de dialogue pour selection du fichier
chemin = "P:\Station Traitement Tri\Service STT\STT PRODUCTION\SIMULATION PROD\Prévision-Réel PROD"
Application.Dialogs(xlDialogOpen).Show (chemin)
Application.ScreenUpdating = False
' Ajoute une feuille de dialogue temporaire
Set CurrentSheet = ActiveSheet
Set FeuilleDépart = ActiveSheet
Set PrintDlg = ActiveWorkbook.DialogSheets.Add
PrintDlg.Visible = xlSheetHidden
SheetCount = 0
' Ajoute les boutons d'option
TopPos = 40
For i = 1 To ActiveWorkbook.Worksheets.Count
Set CurrentSheet = ActiveWorkbook.Worksheets(i)
' Ne tient pas compte des feuilles vide ou masquées
If Application.CountA(CurrentSheet.Cells) <> 0 And _
CurrentSheet.Visible Then
SheetCount = SheetCount + 1
PrintDlg.OptionButtons.Add 78, TopPos, 150, 16.5
PrintDlg.OptionButtons(SheetCount).Text = _
CurrentSheet.Name
If CurrentSheet.Name = FeuilleDépart.Name Then _
PrintDlg.OptionButtons(SheetCount).Value = xlOn
TopPos = TopPos + 13
End If
Next i
' Positionne les boutons OK et Annuler PrintDlg.Buttons.Left = 240
' Dimensionne la hauteur, la largeur et le titre de la bte de dialogue
With PrintDlg.DialogFrame
.Height = Application.Max _
(68, PrintDlg.DialogFrame.Top + TopPos - 34)
.Width = 230
.Caption = "A quelle feuille souhaitez-vous accéder ? "
End With
' Change l'ordre de tabulation des boutons OK et Annuler
' afin de donner le focus au premier bouton d'option
PrintDlg.Buttons("Button 2").BringToFront
PrintDlg.Buttons("Button 3").BringToFront
' Affiche la boîte de dialogue
FeuilleDépart.Activate
Application.ScreenUpdating = True
If SheetCount <> 0 Then
If PrintDlg.Show Then
Application.ScreenUpdating = False
For i = 1 To SheetCount
If PrintDlg.OptionButtons(i).Value = xlOn Then
Worksheets(PrintDlg.OptionButtons(i).Caption).Activate
' colle le tableau
Range("A22").Select
Selection.Paste
Application.CutCopyMode = False
ActiveWorkbook.Save
End If
Next i
End If
Else
MsgBox "Toutes les feuilles sont vides."
End If
' Supprime la feuille de dialogue temporaire (sans message d'avertissement)
Application.DisplayAlerts = False
PrintDlg.Delete
End Sub
Je suis novice en la matière et cherche une solution à un petit problème de code.
J'ai récupéré une partie de ce code sur un forum et je coince dans la solution.
Tout ce passe correctement jusqu'a la selection de la feuille, mais je n'arrive pas a coller le tableau.(message d'erreur sur la ligne "selection.paste")
Aprés avoir fait plusieurs essais je viens demander votre aide.
Merci à tous
Private Sub copier_Click()
Dim chemin As String
Dim i As Integer
Dim TopPos As Integer
Dim SheetCount As Integer
Dim PrintDlg As DialogSheet
Dim CurrentSheet, FeuilleDépart As Worksheet
Dim cb As OptionButton
' selectionne le tableau
Workbooks("RAPPORTS.xls").Sheets("production generale").Activate
Sheets("production generale").Range("A4:V59").Select
Sheets("production generale").Range("A4:V59").Copy
' boite de dialogue pour selection du fichier
chemin = "P:\Station Traitement Tri\Service STT\STT PRODUCTION\SIMULATION PROD\Prévision-Réel PROD"
Application.Dialogs(xlDialogOpen).Show (chemin)
Application.ScreenUpdating = False
' Ajoute une feuille de dialogue temporaire
Set CurrentSheet = ActiveSheet
Set FeuilleDépart = ActiveSheet
Set PrintDlg = ActiveWorkbook.DialogSheets.Add
PrintDlg.Visible = xlSheetHidden
SheetCount = 0
' Ajoute les boutons d'option
TopPos = 40
For i = 1 To ActiveWorkbook.Worksheets.Count
Set CurrentSheet = ActiveWorkbook.Worksheets(i)
' Ne tient pas compte des feuilles vide ou masquées
If Application.CountA(CurrentSheet.Cells) <> 0 And _
CurrentSheet.Visible Then
SheetCount = SheetCount + 1
PrintDlg.OptionButtons.Add 78, TopPos, 150, 16.5
PrintDlg.OptionButtons(SheetCount).Text = _
CurrentSheet.Name
If CurrentSheet.Name = FeuilleDépart.Name Then _
PrintDlg.OptionButtons(SheetCount).Value = xlOn
TopPos = TopPos + 13
End If
Next i
' Positionne les boutons OK et Annuler PrintDlg.Buttons.Left = 240
' Dimensionne la hauteur, la largeur et le titre de la bte de dialogue
With PrintDlg.DialogFrame
.Height = Application.Max _
(68, PrintDlg.DialogFrame.Top + TopPos - 34)
.Width = 230
.Caption = "A quelle feuille souhaitez-vous accéder ? "
End With
' Change l'ordre de tabulation des boutons OK et Annuler
' afin de donner le focus au premier bouton d'option
PrintDlg.Buttons("Button 2").BringToFront
PrintDlg.Buttons("Button 3").BringToFront
' Affiche la boîte de dialogue
FeuilleDépart.Activate
Application.ScreenUpdating = True
If SheetCount <> 0 Then
If PrintDlg.Show Then
Application.ScreenUpdating = False
For i = 1 To SheetCount
If PrintDlg.OptionButtons(i).Value = xlOn Then
Worksheets(PrintDlg.OptionButtons(i).Caption).Activate
' colle le tableau
Range("A22").Select
Selection.Paste
Application.CutCopyMode = False
ActiveWorkbook.Save
End If
Next i
End If
Else
MsgBox "Toutes les feuilles sont vides."
End If
' Supprime la feuille de dialogue temporaire (sans message d'avertissement)
Application.DisplayAlerts = False
PrintDlg.Delete
End Sub
Dernière édition: