IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[VBA-E] Si la feuille existe alors


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 23
    Par défaut [VBA-E] Si la feuille existe alors
    J'aimerai mettre une condition : si la feuille du nom : ____ existe dans le classeur alors ....

    Est ce possible?

    Merci d'avance pour votre aide

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    en utilisant la gestion d'erreur...par exemple...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Function FeuilleExiste(wk As Workbook, stFeuille) As Boolean
     On Error Resume Next
     FeuilleExiste = Not (wk.Sheets(stFeuille) Is Nothing)
    End Function
     
     
    Sub MonTestDelaFonctionExiste()
      If FeuilleExiste(ThisWorkbook, "feuil1") Then
        MsgBox "la feuille existe"
       Else
        MsgBox "N'existe pas "
      End If
    End Sub

  3. #3
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 23
    Par défaut
    Si j'ai bien compris avec Thisworkbook, je travail sur le classeur d'ou la macro est lancée. Moi j'aimerai savoir si une feuille existe sur un classeur ouvert mais non celui d'ou je lance la macro. Il faut remplacer thisworkbook par autre chose?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If FeuilleExiste(ThisWorkbook, "feuil1") Then

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    ben comment l'ouvre tu ton classeur , montre nous le code...

  5. #5
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 23
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    While reference(i) <> ""
      m = 1
      nom_fichier = ActiveWorkbook.Name
      ChDir k
     
     
      While (Dir(k & "\FERT pliage automatisée " & reference(i) & indice(m) & ".xls")) = ""
        m = m + 1
      Wend
     
      If FeuilleExiste(ThisWorkbook, "FTP " & reference(i)) Then
     
      Else
        Workbooks.Open Filename:=k & "\FERT pliage automatisée " & reference(i) & indice(m) & ".xls"
        Windows("FERT pliage automatisée " & reference(i) & indice(m) & ".xls").Activate
     
     
    ' la je voudrai rajouter : si la feuille"panoplie" existe dans le fichier alors...
     
     
        j = Sheets("Poste de pliage").Range("C1") - 1 'N° de la feuille à afficher
     
        If j = 1 Then
          nom = "F.T.P. " & j & " POSTE DE PLIAGE"
        Else:
          nom = "F.T.P. " & j & " POSTES DE PLIAGE"
        End If
     
        Sheets(nom).Select
        Sheets(nom).Copy Before:=Workbooks( _
              nom_fichier).Sheets(8)
        Windows("FERT pliage automatisée " & reference(i) & indice(m) & ".xls").Activate
        ActiveWindow.Close
        Sheets(nom).Select
        Sheets(nom).Name = "FTP " & reference(i)
        Sheets("Feuilles données").Select
      End If
     
      i = i + 1
     
    Wend

  6. #6
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    ben pour lors de l'ouverture du classeur place le résultat dans une variable de type workbook...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim wk as workbook
    ....
     
    set wk Workbooks.Open (Filename:=k & "\FERT pliage automatisée " & reference(i) & indice(m) & ".xls")
    tu peu ensuite utiliser ta variable wk ...qui pointe vers ton classeur... en évitant même tout tes activate ... par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ..j = wk.Sheets("Poste de pliage").Range("C1") - 1 'N° de la feuille à afficher...

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/03/2015, 11h22
  2. [VBA-E] Ordonner les feuilles d'un classeur
    Par ptitsoleil87 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 19/12/2005, 16h49
  3. [Access][VBA] Ouvrir un document word existant
    Par NicoNGRI dans le forum Access
    Réponses: 1
    Dernier message: 16/12/2005, 12h39
  4. [VBA] [Excel] Selection des feuilles
    Par KOFJCH dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/12/2005, 18h18
  5. [VBA] Copie d'une feuille (avec graphique)
    Par ed_dexia dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 06/10/2005, 09h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo