erreur 1004 la méthode select de la classe worksheet a échoué

phil75016

XLDnaute Junior
Bonjour

Sub imprime_les_feuilles_remplies()
Sheets("Charge").Select
For I = 1 To 4
Set mafeuille = Worksheets(I)
mafeuille.Select
If Cells(1, 52).Value > 0 Then
ActiveWindow.SelectedSheets.PrintOut Copies:=1
End If
Next I
End Sub


J'ai cette macro dans un fichier que j'envoie à plusieurs personnes. Dans certains cas, lorsque ces personnes me retournent le fichier cette macro ne fonctionne plus et j'ai le blocage sur la ligne mafeuille.select. J'ai le même blocage si je remplace sheets("Charge").select par sheets(1).select. J'ai l'impression que si on ne met pas le nom entier de la feuille lorsque l'on sélectionne une feuille il y a ce bug. Merci pour votre aide.
 

Paf

XLDnaute Barbatruc
Re : erreur 1004 la méthode select de la classe worksheet a échoué

Bonjour

Eviter l'utilisation de Select qui ralentit l'exécution .

Une solution:

Code:
Sub imprime_les_feuilles_remplies()
 For i = 1 To 4
    With Worksheets(i)
    If .Cells(1, 52).Value > 0 Then
        .PrintOut Copies:=1
    End If
    End With
 Next i
End Sub

A+
 

phil75016

XLDnaute Junior
Re : erreur 1004 la méthode select de la classe worksheet a échoué

Bonjour

Eviter l'utilisation de Select qui ralentit l'exécution .

Une solution:

Code:
Sub imprime_les_feuilles_remplies()
 For i = 1 To 4
    With Worksheets(i)
    If .Cells(1, 52).Value > 0 Then
        .PrintOut Copies:=1
    End If
    End With
 Next i
End Sub

A+

Merci beaucoup, c'est bon même si je ne m'explique pas pourquoi çà ne fonctionne pas selon la personne qui me retourne le fichier. Est ce que çà peut venir de la version d'excel? Moi je suis en 20007.
 

vgendron

XLDnaute Barbatruc
Re : erreur 1004 la méthode select de la classe worksheet a échoué

Bonjour,

la ligne Sheets("Charge").select ne sert à rien, puisque tu sélectionnes et tu ne fais plus rien sur cette feuille

ensuite, la boucle de 1 à 4,
si tes collègues s'amusent à supprimer puis recréer des feuilles, les indices ne vont plus correspondre. donc ta macro planter.

si tu es sur d'avoir toujours que 4 feuilles de données + ta feuille "Charge"
tu peux faire une boucle comme ceci

Code:
Sub test()
For Each ws In Worksheets
    If ws.Name <> "Charge" Then
        If ws.Cells(1, 52).Value > 0 Then
            ws.PrintOut Copies:=1
        End If
    End If
Next ws
End Sub

ou plus court
Code:
Sub test()
For Each ws In Worksheets
    If (ws.Name <> "Charge") and (ws.Cells(1, 52).Value > 0) Then ws.PrintOut Copies:=1
Next ws
End Sub

PS: Hello All
 
Dernière édition:

phil75016

XLDnaute Junior
Re : erreur 1004 la méthode select de la classe worksheet a échoué

Merci à toi car ta boucle est très interessante et me servira aussi pour d'autres macros. Mais pourquoi la seul instruction sheets(1).select ne fonctionne pas alors qu'elle fonctionne pour d'autres? Les personnes ne peuvent pas supprimer des feuilles ni en ajouter.
 

Discussions similaires

Statistiques des forums

Discussions
314 656
Messages
2 111 613
Membres
111 225
dernier inscrit
arnaud3110