(résolu)Problème code vba

  • Initiateur de la discussion Initiateur de la discussion jpp1230
  • Date de début Date de début

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 !

jpp1230

XLDnaute Nouveau
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
 
Dernière édition:
Re : Problème code vba

Bonjour Stefan

Range("A22").Select
Paste
edit: Bonjour Pierrot +- la même chose si je comprend bien.
Pas tout à fait, si tu ne précise pas l'objet sur lequel s'applique la méthode "paste", vba te retournera un message d'erreur... en l'occurence la méthode s'applique à une feuille de calcul (entre autres) mais pas à un objet "range"...

bonne soirée
@+
 
Re : Problème code vba

Salut à tous et merci a vous tous pour vos réponces.
J' ai toujours le même problème 'erreur d'éxécution 1004' la méthode paste de la classe worksheet à échoué
en pointant toujours sur la même ligne qui colle le tableau
 
Re : Problème code vba

Bonjour,

quelles lignes de code utilisées ? quel tableau ? sans un tout petit fichier exemple, cela va être difficile de t'aider... tu n'aurais pas des cellules fusionnées des fois ??

bonne journée
@+
 
Re : Problème code vba

Le fichier "rapports" contient le code sur le bouton copier.
Le problème est que suivant mon tableau, je dois le copier sur une feuille différente a chaque fois dans le fichier "Avril", "Mai" etc...
l'ouverture du fichier et de la feuille choisie marche bien, mais j'ai toujours le message d'erreur au moment de coller le tableau.
Les feuilles étant nommé toujours du même nom dans tous les fichiers.
J'espère que les 2 fichier suffirons a vous aider.
 

Pièces jointes

Re : Problème code vba

Re,

tu as pas mal de cellules fusionnées dans tes classeurs... pas top de gérer ça en vba.. en plus plein d'onglets dans tes classeurs, pas trop le temps, n'y l'envie de m'y plonger... le mieux est toujours un seul classeur quitte à éclater en 2 onglets, et de ne présenter que le problème posé....

bon après midi
@+
 
Re : Problème code vba

Problème résolu. merci à Pierrot93 de m'avoir mis sur la voie et au autre d'avoir essayé de m'aider
Je met aussi la correction de mon code, cela pourrait servir à quelqu'un

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


' boite de dialogue pour selection du fichier
chemin = "D:\Documents and Settings\jean-pierre.pedro\Desktop\Nouveau dossier"
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
Workbooks("RAPPORTS.xls").Sheets("production generale").Range("A4:V59").Copy Worksheets(PrintDlg.OptionButtons(i).Caption).Range("A22")
Application.CutCopyMode = False



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


ActiveWorkbook.Save

End Sub


")
 
- 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
4
Affichages
363
Réponses
2
Affichages
409
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
504
Réponses
3
Affichages
600
Réponses
3
Affichages
539
Réponses
3
Affichages
241
Réponses
3
Affichages
523
Réponses
9
Affichages
386
Retour