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 :

problème d'exécution de code


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 345
    Par défaut problème d'exécution de code
    Bonjour, j'ai une erreur d'exécution que je n'arrive pas à régler :

    Impossible de renommer une feuille comme une autre feuille, une bibliothèque d'objets référencée ou un classeur ...

    Je crois que cela vient du fait que la feuille existe déjà, j'aimerais pourtant qu'il m'écrive le message de la boîte à chaque fois que je clique sur le bouton ! Mais même en supprimant le reste de l'exécution, je remarque qu'il ignore juste cette ligne ! Pourquoi et comment corriger cela ?

    je reviens encore à la charge :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     Dim WsSOurce As Worksheet, filtre As Workbook, WsCible As Worksheet
        Dim Dab As String, Fin As String
        Application.ScreenUpdating = False
        Set WsSOurce = ThisWorkbook.Sheets("en cours liste complète réseau")
        On Error Resume Next: WsSOurce.ShowAllData: On Error GoTo 0
     
            'Application.DisplayAlerts = False
        If FeuilleExiste("réseau en cours tarifé" & Year(Date)) = True Then
          '  Sheets("réseau en cours tarifé" & Year(Date)).Delete
          MsgBox ("L'onglet Réseau en cours tarifé " & Year(Date) & " exsite déjà ! Veuillez d'abord la supprimer")
            'Application.DisplayAlerts = True
     
        End If





    Ici ma fonction qui vérifie si la feuille existe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Function FeuilleExiste(Nom As String) As Boolean
        Dim sh As Object
     
        For Each sh In Sheets
            If UCase(sh.Name) = UCase(Nom) Then
                FeuilleExiste = True
                Exit For
            End If
        Next
    End Function
    Merci pour votre aide

  2. #2
    Membre Expert Avatar de Gado2600
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Mai 2013
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Office VBA

    Informations forums :
    Inscription : Mai 2013
    Messages : 904
    Par défaut
    Bonjour,

    Dans ta fonction, mets ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public Function FeuilleExiste(Nom As String) As Boolean
        Dim sh As Object
     
        FeuilleExiste = false
        For Each sh In Sheets
            If UCase(sh.Name) = UCase(Nom) Then
                FeuilleExiste = True
                Exit For
            End If
        Next
    End Function
    Pour moi, le manque d'initialisation de variable dans ta fonction lui retourne par défaut "True".
    En effet, dans le cas où tu n'initialise pas tes variables, VBA s'en charge pour toi et, il se peut qu'il le fera de manière à t'embêter un peu

    Cordialement,

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 345
    Par défaut
    Merci, ça marche

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Par défaut
    Bonjour,

    Vous pouvez aussi le faire directement par
    ou par un test direct sans passer par toutes les feuilles, en testant l'erreur retournée

    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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Function Exist_Wsh(Wbk As Workbook, WshName As String) As Boolean
    '=============================================================================
     
        If IsMissing(Wbk) Then Set Wbk = ActiveWorkbook
     
        On Error GoTo Err_notexist
        Exist_Wsh = False
        If Wbk.Worksheets(WshName).Name <> "" Then Exist_Wsh = True 'On accède directement
     
    Err_notexist:
     
            ' Si on a une erreur, on teste si c'est un code 9 (sheet inexistante)
        If err.Number = 9 Then
                err.Clear
     
        Else:
            If err.Number > 0 Then
                MsgBox "Error: " & err.Number & vbCrLf & err.Description, vbCritical
                Exist_Wsh = False
                err.Clear
            End If
        End If
    End Function

  5. #5
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut



    Bonjour,

    on peut tester l'existence d'une feuille avec la fonction de feuille de calculs ESTREF (1 ou 2 lignes de code),
    voir les liens que j'ai déjà postés dans son autre discussion sur le même sujet pourtant …

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

Discussions similaires

  1. [AC-2000] problème à l'exécution de code VBA
    Par nico84 dans le forum VBA Access
    Réponses: 4
    Dernier message: 14/09/2009, 12h54
  2. quelques problèmes pour exécuter mes codes
    Par djimangue dans le forum Langage
    Réponses: 6
    Dernier message: 18/12/2007, 01h00
  3. problèmes d'exécution de code
    Par jlon25 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/08/2007, 11h44
  4. probléme d'exécution de code
    Par nicolovitch dans le forum Access
    Réponses: 1
    Dernier message: 22/09/2006, 10h18
  5. [VBA]Problème d'exécution de code
    Par cciocc dans le forum IHM
    Réponses: 1
    Dernier message: 08/06/2006, 11h00

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