Erreur d'exécution 9 et logique du code

Bonjour à tous,

Je récupère un classeur d'un ancien collègue, et je ne comprends pas son code, et ce qu'il a voulu obtenir comme résultat.

Je comprends qu'il sert à trier et à...???

Actuellement, il y a une erreur d'exécution 9 (indice n'appartient pas à la sélection), et je n'ose toucher à rien, puisque je ne comprends pas son code.

Merci de me faire part de vos éclaircissements sur ce code, et solutions.

le fichier:

bonsoir,

Le fichier ne semble pas récupérable.

Utilise cjoint

A+

Bonsoir,

Il suffit d'ajouter une feuille nommée "Feuil1" dans le classeur. C'est l'absence de cette feuille qui provoque une erreur d'exécution.

La macro utilise cette feuille comme support pour imprimer la caserne sélectionnée par son N°

Pour éviter de gaspiller du papier pour rien, vous pouvez modifier (vers la fin)

ActiveWindow.SelectedSheets.PrintOut preview:=True, Copies:=1, Collate:=True

Ainsi la macro vous proposera d'abord l'aperçu avant impression au lieu d'imprimer directement...

Vous aurez ainsi la possibilité d'imprimer ou de fermer l'aperçu sans imprimer.

La macro ne fait rien d'autre.

Notez qu'après l'exécution la macro laisse la feuille "FIT TEST..." filtrée sur la caserne demandée.

Rien ne vous empêche de procéder à une nouvelle impression avec une autre N° de caserne...

...Ou d'afficher à nouveau toutes les lignes en sélectionnant tout dans le filtre colonne 5.

A+

Bonjour galopin01,

Merci pour ces précieux renseignements. Maintenant, je comprends mieux.

Tout compte fait, le code est un peu incomplet!

Il aurait était bien que la feuille ne reste pas filtrée après l'exécution de la macro.

Je ne sais pas si je suis sur la bonne piste, mais ceci pourrait être inséré au code:

ActiveSheet.AutoFilterMode = False
    If Sheets("Fit test 2018").Activate Then

. Mais où?

Bien cordialement.

...à la fin mettre :

    ActiveWindow.SelectedSheets.PrintOut Preview:=True, Copies:=1, Collate:=True
    Sheets("FIT TEST POMPIER 2017").Select
    ActiveSheet.AutoFilterMode = False
    Application.ScreenUpdating = True

Eventuellement supprimer Preview: = True,

A+

Bonjour galopin01,

En même temps que vous me répondiez, j'allais vous transmettre ma modification, et elle fonctionne (en souhaitant que le code soit convenable)!

Application.ScreenUpdating = False
    Sheets("Feuil1").Select
    ActiveWindow.SelectedSheets.PrintOut , preview:=True, Copies:=1, Collate:=True
    Sheets("FIT TEST POMPIER 2017").Select

    Application.ScreenUpdating = True

    ActiveSheet.AutoFilterMode = False

    If Sheets("FIT TEST POMPIER 2017").Activate Then

    Range("A3:T3").Select
        Selection.AutoFilter

    End If

J'aime bien l'idée du preview, mais la mise en page laisse à désirer. Il aurait été bien que l'on retrouve l'identique sans qu'il soit nécessaire de redimensionner les colonnes.

Merci encore

Utilisez le code que je vous ai donné c'est bien suffisant !

Je n'ai pas modifié la mise en page. Mais vous pouvez l'adapter comme vous voulez sans avoir à toucher au VBA.

Bonjour galopin01,

Oui, je comprends, mais si je n'ajoute pas une selection.autofilter, le filtre disparaît!

Je ne sais pas si vous pourriez m'aider sur un autre point! En réalité le fichier de base comporte plus ou moins 2500 (affectation de pompiers), et sur le lot de personne, il y en a des personnes qui n'ont pas leur affectation, et sont classées tout en bas du classeur avec la mention recrue.

Or, quand une recrue reçoit son affectation, on change son statut en lui affectant un groupe et une caserne (colonnes D et E). Et pour le classer dans la bonne section, on fait un coupé/inséré. Le hic, c'est que parfois, on peut déplacer la ligne 2103 à la ligne 36, ce qui provoque souvent des erreurs et corrompt le fichier.

Alors, j'ai pensé inséré un bouton de reclassement, pour éviter les manipulations manuelle des lignes.

Voici le code du bouton, et je me demande s'il n'y a pas moyen de le simplifier et mieux l'adapter. Idéalement, l'ordre de reclassement est : colonnes (E, D, C). Dans la colonne H, il y a cette formule =S(F#<=42004;1;"") qui n'est pas inscrite pour les recrues, mais doit être considérée une fois qu'une personne reçoit son affection.

 Bouton2_QuandClic()

Range("A4:W" & Range("E" & Rows.Count).End(xlUp).Row).Sort key1:=Range("E4"), order1:=xlAscending, dataoption1:=xlSortNormal, key2:=Range("D3"), order2:=xlAscending, dataoption2:=xlSortNormal, Header:=xlYes

    ActiveSheet.AutoFilterMode = False
    If Sheets("FIT TEST POMPIER 2018").Activate Then

        Range("A3:W3").Select
        Selection.AutoFilter

    End If
End Sub

Merci pour votre aide précieuse.

Bonjour à tous,

comme le sujet principal de ce poste est résolu, je vais le taguer comme tel. Et je vais en lancer un nouveau pour le sujet sur le tri.

merci à galopin01.

Bonne fin de semaine.

Rechercher des sujets similaires à "erreur execution logique code"