ouvrir la feuille si elle existe sinon applique la macro  Sujet rĂ©solu

Vous pouvez poser ici vos questions à propos d'Excel et répondre aux questions des autres membres ...

Modérateurs: Dan, Nad, Sébastien, Amadéus

ouvrir la feuille si elle existe sinon applique la macro

Messagede plabrousse » 24 Nov 2009, 16:07

:D Bonjour Ă  tous.

L'objectif est d'insérer dans un code la condition suivante:

si la feuille ("Coucou") existe, l'ouvrir, sinon, passer Ă  la suite.

Or je n'ai pas trouvé la syntaxe de existe en VBA.

Merci de vos conseils avisés. :sun:

Bien cordialement Ă  tous,

Elfi
Je pense donc je suis (Descartes)
j'épanche donc j'échuie (un auvergnat qui a renversé son café)
Avatar de l’utilisateur
plabrousse
Membre dévoué
 
Messages: 545
Inscription: 09 AoĂ» 2007, 14:10
Localisation: Aurillac (Cantal)
Version Excel: 2003 FR

Messagede dubois » 24 Nov 2009, 16:14

Bonjour,

Code: Tout sélectionner
Sub test()
    On Error Resume Next
    Sheets("Coucou").Activate
    On Error GoTo 0
    Range("a1").Activate
End Sub

çà devrait suffire
Amicalement
Claude.
Faire simple, c'est ce qui est le plus compliqué ! et vice versa (à méditer)
dubois
Maître Excel
 
Messages: 6567
Inscription: 08 Déc 2007, 12:03
Localisation: MEUDON région parisienne
Version Excel: Vista Office 2007FR

Messagede plabrousse » 24 Nov 2009, 16:47

:D Bonjour Cher Claude,

toujour lĂ  quand on a besoin de toi!

merci pour la réponse rapide. A quoi correspond "range ("A1"). activate?

cordialement,
Ă  te relire,

Elfi
Je pense donc je suis (Descartes)
j'épanche donc j'échuie (un auvergnat qui a renversé son café)
Avatar de l’utilisateur
plabrousse
Membre dévoué
 
Messages: 545
Inscription: 09 AoĂ» 2007, 14:10
Localisation: Aurillac (Cantal)
Version Excel: 2003 FR

Messagede plabrousse » 24 Nov 2009, 17:49

:? En fait, c'est un peu plus compliqué:

dans l'appli, une feuille se crée avec un bouton (créer un nouvel état). La macro corrspondante recopie une feuille type intouchable nommée "base" et nomme cette copie "base(2)"

Ensuite une saisie est faite sur "base(2)" puis validée par un autre bouton (Validation). La macro correspondante renomme automatiquement la feuille "base(2)" en fonction d'éléments saisis (en l'occurence, ici des dates).

Donc, avec le bouton Validation, "base(2)" devient (par exemple) "du 01/01/09 au 31/01/09". (grace Ă  un code de Nad-Dan).

Jusque là, ça va.

Le problème est qu'il arrive que des utilisateurs n'aient pas le temps de finir leur saisie avant de partir. Il sortent donc de l'appli et du coup, sans validation, c'est "Base (2)" qui reste.

La validation gérant aussi des cumuls, l'objectif est de forcer les utilisateurs soit à complêter, soit à valider leur dernière saisie avant la création d'une nouvelle feuille. C'est indispensable pour les cumuls.
D'ou le besoin de rechercher, Ă  l'ouverture de l'appli "base (2) " si elle existe et d'imposer sa validation avant tout autre nouvelle saisie.

ci joint, copie du code en l'état actuel (Créer un nouvel état) ("Saisie (courants)") remplaçant (" base")

Sheets("Saisie (courants)").Visible = True
Sheets("Accueil").Visible = False
Sheets("Saisie (courants)").Unprotect Password:="elfi"
Sheets("Récap km annuels").Visible = True
'Inserer ligne et recopier D4 sur D5'
Sheets("Récap km annuels").Select
Range("A4").Select
Selection.EntireRow.Insert
Range("D5").Select
Selection.AutoFill Destination:=Range("D4:D5"), Type:=xlFillDefault
Sheets("Saisie (courants)").Select
Range("D28").Select
ActiveCell.FormulaR1C1 = "='Récap km annuels'!R[-23]C"
Sheets("Saisie (courants)").Protect Password:="elfi"
Sheets("Saisie (courants)").Copy Before:=Sheets(1)
Sheets("Saisie (courants) (2)").Select
Range("D32").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
ActiveSheet.EnableSelection = xlUnlockedCells
Sheets("Saisie (courants) (2)").Protect
Sheets("Saisie (courants)").Visible = False
Sheets("Récap km annuels").Visible = False
End Sub


:? Hum, j'espère que je suis pas trop compliqué. :?

Amicalement,

Elfi
Je pense donc je suis (Descartes)
j'épanche donc j'échuie (un auvergnat qui a renversé son café)
Avatar de l’utilisateur
plabrousse
Membre dévoué
 
Messages: 545
Inscription: 09 AoĂ» 2007, 14:10
Localisation: Aurillac (Cantal)
Version Excel: 2003 FR

Messagede dubois » 24 Nov 2009, 21:14

Bonsoir Elfi,

Pas facile quand on est pas dans le bain !

Fais voir la macro du bouton "Validation"
le mieux serait le fichier, mais je suppose qu'il ne passera pas.

En gros, tant qu'on a pas valider, il faudrait supprimer la Sheets("Saisie (courants) (2)")
à la fermeture, c'est çà ?
Ă  suivre
Claude.
Faire simple, c'est ce qui est le plus compliqué ! et vice versa (à méditer)
dubois
Maître Excel
 
Messages: 6567
Inscription: 08 Déc 2007, 12:03
Localisation: MEUDON région parisienne
Version Excel: Vista Office 2007FR

Re: ouvrir la feuille si elle existe sinon applique la macro

Messagede plabrousse » 26 Nov 2009, 09:58

:D bonjour Claude,

c'est pas tout à fait ça.
Quand on sort sans valider, la Sheets("saisie (courants)(2)") reste dans l'apli sans être renommée. Je voudrais que : dans ce cas, elle s'ouvre automatiquement quand on revient (elle peut contenir des donnéees saisies).

Quand on valide avant de sortir, elle est renommée. Du coup, c'est la macro Créer un nouvel état qui fonctionnerait quand on revient. :scritch:

Pour le fichier, tu as raison, c'est trop gros. Quant à la marco valider, je t'en parle pas, elle est pire que créer. Ceci dit, si elle peut être utile pour trouver la solution, je te la copierai.

Merci et a+

amicalement,
Je pense donc je suis (Descartes)
j'épanche donc j'échuie (un auvergnat qui a renversé son café)
Avatar de l’utilisateur
plabrousse
Membre dévoué
 
Messages: 545
Inscription: 09 AoĂ» 2007, 14:10
Localisation: Aurillac (Cantal)
Version Excel: 2003 FR

Re: ouvrir la feuille si elle existe sinon applique la macro

Messagede dubois » 26 Nov 2009, 10:59

Bonjour Ă  tous,

Dans le ThisWoorkbook

Code: Tout sélectionner
Private Sub Workbook_Open()
Dim i As Byte, NbF
    NbF = Worksheets.Count
    For i = 1 To NbF
        If Worksheets(i).Name = "Saisie (courants) (2)" Then
            Worksheets(i).Activate
            MsgBox ("Reprise de l'appli. en cours")
            Exit For
        End If
    Next
End Sub


Amicalement
Claude
Faire simple, c'est ce qui est le plus compliqué ! et vice versa (à méditer)
dubois
Maître Excel
 
Messages: 6567
Inscription: 08 Déc 2007, 12:03
Localisation: MEUDON région parisienne
Version Excel: Vista Office 2007FR

Re: ouvrir la feuille si elle existe sinon applique la macro

Messagede plabrousse » 26 Nov 2009, 11:24

:D Merci Claude, cela devrait résoudre mon problème. Cependant, j'ai oublié de te préciser qu'à l'ouverture de l'appli, toutes les feuilles sont masquées sauf une feuille d'accueil. Pour que ton code fonctionne, il faudrait qu'on recherche au préalable dans les feuilles masquées la feuille "saisie (courants) (2)" et la dé-masquer.

une dernière petite idée? :??

D'avance merci,

a+

elfi
Je pense donc je suis (Descartes)
j'épanche donc j'échuie (un auvergnat qui a renversé son café)
Avatar de l’utilisateur
plabrousse
Membre dévoué
 
Messages: 545
Inscription: 09 AoĂ» 2007, 14:10
Localisation: Aurillac (Cantal)
Version Excel: 2003 FR

Re: ouvrir la feuille si elle existe sinon applique la macro

Messagede dubois » 26 Nov 2009, 11:34

re,

Tu ajoute cette ligne sous le If
Code: Tout sélectionner
Worksheets(i).Visible = True

Claude
Faire simple, c'est ce qui est le plus compliqué ! et vice versa (à méditer)
dubois
Maître Excel
 
Messages: 6567
Inscription: 08 Déc 2007, 12:03
Localisation: MEUDON région parisienne
Version Excel: Vista Office 2007FR

Re: ouvrir la feuille si elle existe sinon applique la macro  Sujet rĂ©solu

Messagede plabrousse » 26 Nov 2009, 11:40

:D Yaouh!

Ca y est. Tu es arrivé à ce que je désirais.

Mille fois merci Ă  toi.

Amicalement,

Elfi
Je pense donc je suis (Descartes)
j'épanche donc j'échuie (un auvergnat qui a renversé son café)
Avatar de l’utilisateur
plabrousse
Membre dévoué
 
Messages: 545
Inscription: 09 AoĂ» 2007, 14:10
Localisation: Aurillac (Cantal)
Version Excel: 2003 FR


Retourner vers Questions Excel

Qui est en ligne

Utilisateurs parcourant ce forum: Google [Bot], Google Adsense [Bot], Yahoo [Bot] et 1 invité