Problème avec Sheets("Nom Feuille").Select Replace:=False

Bonjour,

Depuis quelques jours une macro permettant de sélectionner plusieurs feuilles Excel n'est plus prise en compte :

Sheets("Nom de la feuille").Select Replace:=False

Jusqu'à ce jour tout fonctionnait très bien. Je ne comprend pas... y a t-il eu une mise à jour Excel qui fait bugger cette ligne ? un virus ???

J'utilise Excel 2013.

Merci pour vos retours.

Cordialement.

Bonjour

De ce que je vois la ligne de code permet de sélectionner une feuille.

Ce serait bien d'avoir plus d'info pour mieux comprendre ou de voir le code complet

Cordialement

Bonjour Dan,

Le code suivant devrait sélectionner en même temps les feuilles 2, 3 et 4 :

Private Sub CommandButton1_Click()
Sheets("Feuil2").Select
Sheets("Feuil3").Select Replace:=False
Sheets("Feuil4").Select Replace:=False
End sub

Seul la ligne "Sheets("Feuil2").Select" est prise en compte. Les 2 autres lignes ne sont pas traitées.

Ce code fonctionnait très bien avant sur mon ordi, aujourd'hui il ne fonctionne plus.

Cordialement.

Re

Essaie ceci :

Sheets(Array("Feuil2", "Feuil3", "Feuil4")).Select

Si ok, clique sur le V vert à coté du bouton Editer lors de ta réponse afin de clôture le fil

Juste un truc, essaie de prévenir lorsque tu as posté la même demande sur un autre forum également. Cela évite à tout un chacun de chercher une solution alors qu'elle t'ai peut être déjà proposée ailleurs. Merci de ta compréhension

Bien Cordialement

Merci pour ces réponses.

En effet je peux travailler avec Array et un tableau() car le nom de feuille sélectionnée est aléatoire.

Mais mon outil est utilisé par plusieurs collaborateurs sur plusieurs postes.

J'aimerai quand même comprendre pourquoi cette lignes de code ne fonctionnent plus aujourd'hui sur mon ordi !

Je ne mets donc pas la discussion en résolu.

J'ai posté ma demande sur un autre forum pour multiplier mes chances de réponse mais je vois que les mêmes personnes les parcours...

Cordialement.

Salut,

J'arrive un peu après la bataille, mais j'ai aussi ce problème.

Sauf que dans mon cas, les feuilles étaient sélectionnées en fonction de la valeur d'une cellule. Le code est :

'Sélection des onglets à imprimer

If Cells(325, 2).Value = "Vrai" Or Cells(327, 2).Value = "Vrai" Then Sheets("Gouvernes").Select Replace:=False

If Cells(329, 2).Value = "Vrai" Then Sheets("Alt. TBO").Select Replace:=False

If Cells(331, 2).Value = "Vrai" Then Sheets("Insp. corros°").Select Replace:=False

If Cells(333, 2).Value = "Vrai" Then Sheets("Pesée").Select Replace:=False

If Cells(335, 2).Value = "Vrai" Then Sheets("Vol de contrôle").Select Replace:=False

If Cells(337, 2).Value = "Vrai" Then Sheets("Test ATC").Select Replace:=False

If Cells(339, 2).Value = "Vrai" Then

Sheets("APRS").Select Replace:=False

Sheets("Livrets").Select Replace:=False

End If

Comment faire pour gérer ça avec l'instruction Array ?

Merci d'avance.

Manu

J'ai créé ce fichier pour chercher une solution. Maintenant que je tire les noms des onglets que je veux sélectionner, comment est ce que j'exploite ma variable a ?

Merci d'avance.

Manu

34classeur1.xlsm (20.70 Ko)

Bonjour Manu :

A essayer :

Sub TestSélection()
    Dim feuilles, i%
    feuilles = Split("Gouvernes;Alt. TBO;Insp. corros°;Pesée;Vol de contrôle;Test ATC;APRS;Livrets", ";")
    If Cells(325, 2) <> "Vrai" And Cells(327, 2) <> "Vrai" Then feuilles(0) = ";@"
    For i = 2 To 12 Step 2
        If Cells(327 + i, 2) <> "Vrai" Then feuilles(i / 2) = "@"
    Next i
    If Cells(339, 2) <> "Vrai" Then feuilles(7) = "@"
    MsgBox Join(feuilles, ";")
    feuilles = Replace(Join(feuilles, ";"), ";@", "")
    If Left(feuilles, 1) = ";" Then feuilles = Replace(feuilles, ";", "", 1, 1)
    feuilles = Split(feuilles, ";")
    Worksheets(feuilles).Select
End Sub

Sous quelques réserves cependant : selon ton post initial, j'ai considéré que tes cellules contenaient des valeurs textes "Vrai" et non des valeurs booléennes d'une part, et que les espaces dans tes noms de feuilles étaient des espaces simples.

Le cas échéant, à toi d'adapter : une condition testant une valeur booléenne s'écrit simplement :

If Cells(325, 2) Then... ou If Not Cells(325, 2) Then puisque tu noteras que j'ai inversé le test (en constituant d'abord un tableau de toutes les feuilles, pour en éliminer celles qui ne répondent pas aux conditions)...

NB- Un code indenté (et sans sauter de lignes) est lu plus rapidement ! L'utilisation de la balise Code dans un post facilite aussi la lecture !

Cordialement.

Bonjour,

Une autre méthode :

86classeur1.xlsm (20.83 Ko)

A+

Après quelques recherches il s'avère que c'est Microsoft qui a retiré cette possibilité :

"Améliorations et correctifs :

Cette mise à jour de sécurité contient des améliorations et des correctifs pour les problèmes suivants non liés à la sécurité :

- La performance est faible lorsque vous utilisez la méthode Sheet.Select (Sélectionner feuille) de manière répétée sur la même feuille dans la macro VBA macro."

https://support.microsoft.com/fr-fr/kb/3115262

Dommage qu'ils aient supprimé cette manière de coder même c'est pas la meilleure façon de faire.

Je suis donc passé par un tableau.

Merci pour vos retours.

Cordialement,

MFerrand a écrit :

Bonjour Manu :

A essayer :

Merci, j'ai adapté le code et ça marche apparemment.

Merci aussi à Frangy pour sa solution.

Manu

Rechercher des sujets similaires à "probleme sheets nom feuille select replace false"