"Type incompatible (erreur 13)"

  • Initiateur de la discussion Initiateur de la discussion SYLVAIN
  • 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 !

S

SYLVAIN

Guest
Bonjour le forum ainsi que thierry 😉

lorsque je lance cette macro (merci thierry 😀 )

écrira sur chaque feuille :

en A1 son nom espectif
en B1 la date et l'heure


Sub AllSheets()
Dim WS As Worksheet
For Each WS In Sheets
With WS
.Cells(1, 1) = WS.Name
.Cells(1, 2) = Format(Now, "DD/MM/YYYY HH:MM")
End With
Next

je me retrouve avec un "Type incompatible (erreur 13)"

que dois je faire
 
Salut Sylvain, le Forum

Huum je viens de faire un copier collé du Code que tu as posté ici, et, mis à part le "End Sub" manquant... Cette Macro Fonctionne Parfaitement

Je viens de tester sous
- Excel XP (2002) / Win XP Pro 5.1 S/P1
- Excel 2000 / Win 2000 5.0 S/P 3

Es-tu sous Excel 97 ?

Sinon quelle version et quelle ligne bloque (en jaune) quand tu as le message Erreur 13 ?

Bonne Soirée
@+Thierry
 
dring dring, bonjor le forum !!!!!!!

Voila ma macro:

Dim WS As Worksheet
For Each WS In Sheets
With WS

Columns("M:S").Select
Selection.EntireColumn.Hidden = False
Range("N2").Select
Selection.AutoFilter Field:=1, Criteria1:="BARRIOL"
Columns("N:R").Select
Selection.EntireColumn.Hidden = True
Range("A1").Select

End With
Next ' ici la ligne bloque (en jaune) avec le message erreur 13


End Sub

je suis sous office 2000

bonne journée
 
Hello Sylvain, le Forum

Essaie plutôt comme ceci :

Sub SYLVAIN()
Dim WS As Worksheet
For Each WS In Sheets
With WS
.Select
.Columns("M:S").EntireColumn.Hidden = False
.Range("N2").AutoFilter Field:=1, Criteria1:="BARRIOL"
.Columns("N:R").EntireColumn.Hidden = True
.Range("A1").Select
End With
Next

End Sub

(Surtout ne pas oublier les "." en début de ligne entre "With" et "End With")

Bonne Journée
@+Thierry
 
Bonjour à tous.

J'ai du mal à faire le lien entre la première procédure (AllSheets) et la deuxième (Sub SYLVAIN) que Thierry vient de corriger.

Pour la première, si elle engendre aussi une erreur, il y a un problème, sous Excel XP, avec la fonction VBA Format, qui parfois n'est pas reconnue.
Michel avait trouvé le truc: il faut écrire VBA.Format... Mais de mémoire, ce n'était pas l'erreur 13.

Une autre question que je me pose: j'ai toujours du mal à faire la différence entre les objets SHEETS et WORKSHEETS.
Comme l'erreur signale "type incompatible", n'y aurait-il pas une incompatibilité justement entre la déclaration de WS comme Worksheet, et la boucle For each WS In SHEETS? Peut-être faut-il remplacer cette boucle par For each XS In Worksheets, ou bien laisser Sheets, mais déclarer WS as sheet???
Malheureusement, je suis sur un poste internet au boulot sans Excel sous la main, donc c'est juste quelques idées dans le bleu!

Enfin, si cela peut aider quand même...

Bonne journée.
Laurent.
 
Hello Laurent,

et woui Sheets ou Worksheets that is the Question !! lol

L'aide dit :

Worksheets, propriété
L'objet Application renvoie une collection Sheets qui représente toutes les feuilles de calcul du classeur actif. En lecture seule.

Sheets, propriété
L'objet Application renvoie une collection Sheets qui représente toutes les feuilles du classeur actif. En lecture seule.

Et hop "De Calcul" disparito !!!

Alors l'idée simple m'est venue immédiatement de faire le test suivant :

Dans un classeur vierge avec trois Feuilles, ajouter 1 Feuille DE MacroXL4 puis faites Tourner ces deux macros :

Sub WooooooooorkSheets()
Dim WS As Worksheet
Dim Msg As String
For Each WS In Worksheets
Msg = Msg & WS.Name & vbCrLf
Next
MsgBox Msg
End Sub


Sub Sheeeeeeeeeeets()
Dim WS As Worksheet
Dim Msg As String
For Each WS In Sheets
Msg = Msg & WS.Name & vbCrLf
Next
MsgBox Msg
End Sub

Donc on voit de suite que WorkSheet ne détecte pas la Macro1 (FeuilMacroXL4) donc voici une première différence...

Ensuite on corse la chose (Salut Pat5 !!) lol

On rajoute une DialogSheetXL5, et pourquoi pas un graph !!
La Macro Worksheet s'en sort aisément et ne liste toujours que les feuilles (les vraies), tandis que la macro Sheets bug lamentablement avec une erreur 13 d'incompatibilité de type... (on dirait que les DialogSheet et les Graph n'encaisse pas WS.Name !)

Voilà donc la leçon a en tirer !! J'en conclus que tant que le classeur ne contient que des feuilles de calcul, Sheets et Worksheets ont le même effet, mais que Sheets détecte tous les onglets d'un classeur... La preuve, si vous avez toujours le classeur avec les 3 feuilles, la MacroXL4, Le DialogSheet et le Graph. faites tourner ceci :

Sub CompteSheets()
Dim Msg As String

MsgBox "WorkSheets trouve : " & Worksheets.Count & " Feuilles dans ce Classeur" & vbCrLf & _
"Tandis que Sheets trouve : " & Sheets.Count & " Feuilles dans ce Classeur"
End Sub


Par contre faire un Dim WS as Sheet... nicht, nicht, Ein gross Katastrof, Niet Niet ! lol

Bonne soirée
@+Thierry
 
Re tout le monde,

En fait en me relisant (sorry for the bold) je viens de réaliser qu'il faut, si on veut vraiment éviter un bug pour lister tous les onglets d'un classeurs contenant des Graphs, par exemple, déclarer WS as Object...

Sub Sheeeeeeeeeeets()
Dim WS As Object
Dim Msg As String
For Each WS In Sheets
Msg = Msg & WS.Name & vbCrLf
Next
MsgBox Msg
End Sub

Mais donc, les MacroXL4 ne sont pas vues par la collection WorkSheets mais par contre elles sont acceptées As WorkSheet (allez comprendre la Logique de Microsoft là dedans)

Bonne soirée
@+Thierry
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
704
Réponses
10
Affichages
655
Réponses
2
Affichages
924
Réponses
2
Affichages
668
Retour