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 :

Ajouter une feuille si elle n'existe pas [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2011
    Messages : 24
    Points : 12
    Points
    12
    Par défaut Ajouter une feuille si elle n'existe pas
    Bonjour à tous,
    Voilà, j'ai un petit souci, j'ai deux classeurs ouverts et j'aimerai savoir comment vérifier l’existence d'une feuille "Bible" dans le classeur Bibles.xls, puis, remplir cette feuille, la triée sur la colonne A et fermer ce classeur...
    J'ai déjà fais ce code, mais je cale entre les "****"...
    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
    Private Sub CmdImpBible_Click()
    'Inactive le calcul du classeur ouvert
      Application.Calculation = xlCalculationManual
      'Inactive la mise à jour visuelle des feuille
      Application.ScreenUpdating = False
      '  'Vérifie l'existence du fichier Bibles.xls.
      If Dir(Workbooks(1).Path & "\Resmetres\Bibles.xls", vbHidden) <> "" Then
        'Le fichier existe, on l'ouvre.
        Workbooks.Open Workbooks(1).Path & "\Resmetres\Bibles.xls"
        'Recherche de la feuille de la Bible.
          '"****"
            'Vérifier si la feuille "Bible" existe
             'si oui
              'effacer son contenu
             'si non
              'la créer
            'Fin condition
          '"****"
      Else
        'le fichier n'existe pas, on le créé
        Application.Workbooks.Add xlWBATWorksheet
        'On le sauvegarde sous son nom
        Workbooks(2).SaveAs Workbooks(1).Path & "\Resmetres\Bibles.xls"
        'Créer la feuille "Bibles"
      End If
      'la remplir la feuille Bible du classeur Workbooks(2) (environ 29000 lignes sur 21 colonnes)
      'trier cette feuille entière sur la colonne A
      'fermer le classeur Workbooks(2)
    Merci d'avance pour vos éventuelles réponses...

    PhalèneCAD...

  2. #2
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonsoir,
    une idée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub CmdImpBible_Click()
    Dim fl As Worksheet
    '......
    For Each fl In ActiveWorkbook
        If fl.Name = "Bible" Then
          Cells.ClearContents
        Else
          Sheets.Add After:=Sheets(Sheets.Count)
          Sheets(Sheets.Count).Name = "Bible"
        End If
    Next fl
    '........
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2011
    Messages : 24
    Points : 12
    Points
    12
    Par défaut
    Bonjour à tous,
    Merci casefayere

    Mais je ne comprend pas, ça ne fonctionne pas.

    Erreur d'exécution 438 :
    Propriété ou méthode non gérée par cet objet
    sur je For Each ? ? ?

    Je vais chercher pourquoi...

    PhalèneCAD...

  4. #4
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Bonjour
    @ casefayere
    j'ai un classeur avec 2 feuilles, Feuil1 et Bible
    la première feuille n'est pas Bible, ton code va créer une nouvelle feuille qu'il essaiera de nommer Bible...

    [edit] ensuite, omission de ta part, il fallait écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each fl In ActiveWorkbook.Worksheets
    Ci-joint code
    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
    Private Sub CmdImpBible_Click()
    Dim Wbk As Workbook
    Dim Sh As Worksheet
    Dim Fichier As String
     
    Application.Calculation = xlCalculationManual
    Application.ScreenUpdating = False
    Fichier = ThisWorkbook.Path & "\Resmetres\Bibles.xls"
    If Dir(Fichier) <> "" Then
        Set Wbk = Workbooks.Open(Fichier)
        On Error Resume Next
        Set Sh = Wbk.Worksheets("Bible")
        On Error GoTo 0
        If Not Sh Is Nothing Then
            Sh.UsedRange.ClearContents
        Else
            Set Sh = Wbk.Sheets.Add(after:=Wbk.Worksheets(Wbk.Worksheets.Count))
            Sh.Name = "Bible"
        End If
    Else
        Set Wbk = Workbooks.Add(1)
        Set Sh = Wbk.Worksheets(1)
        Sh.Name = "Bible"
        Wbk.SaveAs Fichier
    End If
    'la remplir la feuille Bible du classeur Workbooks(2) (environ 29000 lignes sur 21 colonnes)
    'trier cette feuille entière sur la colonne A
    Wbk.Close True
    Set Wbk = Nothing
    Set Sh = Nothing
    Application.Calculation = xlCalculationAutomatic
    End Sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  5. #5
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonsoir mercatog,

    j'ai répondu trop vite, mea culpa, je ne voulais donner que l'idée.
    Bonne soirée
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2011
    Messages : 24
    Points : 12
    Points
    12
    Par défaut
    Bonjour à tous...

    Merci à tous, çà fonctionne NIKEL ! !

    Encire merci,

    PhalèneCAD...

    Bon, voici le code définitif et commenté (je pense correctement)
    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
    Private Sub CmdImpBible_Click()
      Dim Wbk As Workbook
      Dim Sh As Worksheet
      Dim Fichier As String
      'Inactive le calcul du classeur ouvert
      Application.Calculation = xlCalculationManual
      'Inactive la mise à jour visuelle des feuille
      Application.ScreenUpdating = False
      Fichier = ThisWorkbook.Path & "\Resmetres\Bibles.xls"
      'On vérifie l'existence du fichier Bibles.xls.
      If Dir(Fichier) <> "" Then
        Set Wbk = Workbooks.Open(Fichier)
        On Error Resume Next
        'On vérifie l'existance de la feuille "Bible"
        Set Sh = Wbk.Worksheets("Bible")
        On Error GoTo 0
        If Not Sh Is Nothing Then
          'On vide la feuille "Bible"
          Sh.UsedRange.ClearContents
        Else 'La feuille Bible n'existe pas
        'On créé la feuille "Bible"
          Set Sh = Wbk.Sheets.Add(after:=Wbk.Worksheets(Wbk.Worksheets.Count))
          Sh.Name = "Bible"
        End If
      Else
        'le fichier n'existe pas, on le créé
        Set Wbk = Workbooks.Add(1)
        Set Sh = Wbk.Worksheets(1)
        'On créé la feuille "Bible"
        Sh.Name = "Bible"
        'On le sauvegarde sous son nom
        Wbk.SaveAs Fichier
      End If
      Wbk.Save
      Wbk.Saved = True
      Wbk.Close
     
    End Sub
    Encore merci à tous...

  7. #7
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Sauf qu'il faut remettre à automatique Application.Calculation à la fin du code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Application.Calculation = xlCalculationAutomatic
    End Sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2011
    Messages : 24
    Points : 12
    Points
    12
    Par défaut
    Bonsoir à tous,

    Merci mercatog, c'est effectivement un oubli, mais que dans le post, car dans mon code, çà continu encore quelques cinquantaine de lignes.

    Merci encore à tous, çà fonctionne plein pot ! ! !

    Cordialement,

    PhalèneCAD...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Code VBA pour ajout d'une date lorsqu'elle n'existe pas
    Par Jey14 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/10/2013, 13h39
  2. [XL-2003] Création d'une nouvelle feuille si elle n'existe pas
    Par panda31 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 05/08/2011, 14h22
  3. Ajouter une div si elle n'existe pas
    Par beegees dans le forum jQuery
    Réponses: 6
    Dernier message: 15/06/2011, 09h23
  4. Ajouter une ligne si elle n'existe pas dans la table
    Par daimadoshi dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 19/11/2010, 15h52
  5. Créer une procedure si elle n'existe pas.
    Par Chouls dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 10/01/2007, 10h49

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