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

Access Discussion :

[vba][error]run time error 91 object variable or with block


Sujet :

Access

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    344
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 344
    Points : 158
    Points
    158
    Par défaut [vba][error]run time error 91 object variable or with block
    salut,

    c est une fonction qui si une feuille avec un nom precis existe alors je le supprime

    et j ai ce message erreur:

    run time error 91 object variable or with block variable not set

    voila mon code peut etre vous verrez mieux que moi le pb

    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
     
     
    Public Sub SheetControlInvoiceExist()
    ' cette fonction permet de tester si la feuille control inovice existe
     
    Dim mysheet As Worksheet
    Dim msg As String ' mon message
    Dim reponse
     
     
    msg = " Une feuille ' Control Invoice ' est déjà voulez vous la supprimer ? ( An Excel sheet already exists ,do you want to delete it ? ) "
     
     
        If mysheet = Sheets("Control Invoice") Then 'si il y a deja une feuille control invoice
     
     
     
            If MsgBox(msg, vbYesNo) = vbYes Then ' le user clic sur yes
     
            Sheets("Control Invoice").Delete
     
            MsgBox (" la feuille Excel 'Control Invoice' a été supprimé avec succès ( The Excel sheet ' Control Invoice 'deleted successful ) ")
     
            Else ' le user a choisit non
            End If
     
        Else ' il n y a pas de feuille excel control invoice
        End If
     
     
    End Sub

    merci

  2. #2
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour,

    Tu pourrais dé"jà compléter l'instruction
    Question : ton code est dans un module xl ou access?

    Bon courage,

    pgz
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  3. #3
    Membre habitué
    Inscrit en
    Novembre 2005
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 136
    Points : 163
    Points
    163
    Par défaut
    bonjour,

    c'est ton "mysheet" qui pose pb

    va voir dans l'aide d'excel en tapant "worksheet" ou " nom feuille"
    il y a des rubriques interessantes
    notamment possibilité de faire référence à une feuille par son nom

    ex ActiveCell.Worksheet.Name

    ou par son n° (ex Worksheets(1).Activate)

    Attention dans ton test il va te falloir prendre en compte la structure du classeur (combien de feuilles ? où se trouve 'control invoice' etc.)

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    344
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 344
    Points : 158
    Points
    158
    Par défaut
    je pensais que cela était plus simple en donnant juste le nom de la feuille

    si le nom de la feuille = vrai (alors presente ) je supprime sinon rien

    est-ce que ca peux marché comme ca ?

  5. #5
    Membre habitué
    Inscrit en
    Novembre 2005
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 136
    Points : 163
    Points
    163
    Par défaut
    en gros oui mais il y a une syntaxe a respecter.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    344
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 344
    Points : 158
    Points
    158
    Par défaut
    ok j ai fait une fonction qui teste l existence de ma feuille excel

    car si elle existe alors je doit la supprimée sinon rien cela donne ca , ca a l'air de fonctionner :

    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
     
     
    Public Function SheetExist(sheetname As String) As Boolean ' passage parametre le nom du sheet voulu "Control Invoice" return un boolean
    ' cette fonction permet de tester si la feuille control inovice existe ou pas
     
     
                SheetExist = False ' boolean = false
                Debug.Print SheetExist
     
                On Error GoTo ErrorsheetexistFin
                If Len(Sheets(sheetname).Name) > 0 Then ' si la longueur du nom de la feuille
     
                    SheetExist = True
                    Debug.Print SheetExist
     
                    Exit Function
     
                End If
     
     
    ErrorsheetexistFin:
     
    End Function

    je l exploite comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
       'appel de la fonction qui teste si la feuille Excel control invoice exist
                If SheetExist("Control Invoice") = False Then ' n'existe pas
     
                MsgBox (" n' existe pas ")
     
                Else ' existe
     
                Sheets("Control Invoice").Delete
                MsgBox ("control invoice supprimée")
     
                End If
    par contre lorsqu'il delete j ai toujours le message excel qui me demande de supprimer comment je peux faire pour enlever le message

    merci

  7. #7
    Membre habitué
    Inscrit en
    Novembre 2005
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 136
    Points : 163
    Points
    163
    Par défaut
    hello,

    J'ai trouvé ça, et en plus ça fonctionne !

    Lors de la suppression d'un objet Workbook ou Worksheet, une boîte de dialogue s'affiche et invite l'utilisateur à confirmer la suppression. Cette boîte de dialogue s'affiche par défaut. De plus, lorsque vous appelez cette méthode sur ces objets, elle renvoie une valeur de type Boolean : False si l'utilisateur a cliqué sur Annuler ou True s'il a cliqué sur Supprimer.

    La suppression d'un objet Point ou LegendKey supprime toute la série.

    Vous pouvez supprimer des propriétés de document personnalisées mais vous ne pouvez supprimer une propriété de document prédéfinie.

    Vous pouvez uniquement supprimer les objets CubeField que vous avez vous-mêmes créés au moyen de la méthode CalculatedMember.Add et de l'argument xlCalculatedSet.

    Exemples
    Cet exemple montre comment supprimer les cellules A1 à D10 de Sheet1 puis décaler les cellules restantes vers la gauche.

    Worksheets("Sheet1").Range("A110").Delete Shift:=xlShiftToLeft

    Cet exemple montre comment supprimer la feuille de calcul Sheet3 du classeur actif sans afficher la boîte de dialogue de confirmation.

    Application.DisplayAlerts = False
    Worksheets("Sheet3").Delete
    Application.DisplayAlerts = True

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    344
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 344
    Points : 158
    Points
    158
    Par défaut
    merci oui exacte ca fonctionne bien :

    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
     
     
     
    Application.DisplayAlerts = False ' enleve les messages d'alertes excel notamment lors on delete le sheet control invoice
     
                'appel de la fonction qui teste si la feuille Excel control invoice exist
                If SheetExist("Control Invoice") = False Then ' n'existe pas
     
                MsgBox (" n' existe pas ")
     
                Else ' existe
     
                Sheets("Control Invoice").Delete
                MsgBox ("control invoice supprimée")
     
                End If
                Application.DisplayAlerts = True ' remet les messages d'alertes excel
    merci c cool

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

Discussions similaires

  1. [XL-2010] Run time error 1004 Application defined or object defined
    Par AmbreM dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/09/2013, 18h00
  2. Run time error 91 in vb:object variable or with block variable not set
    Par azzouz90 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 09/09/2011, 01h40
  3. Réponses: 1
    Dernier message: 20/02/2010, 08h03
  4. [VBA-E] - run-time error "Type mismatch"
    Par Chewi dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 11/02/2007, 18h44
  5. [VBA-E] Run-time error 1004, pourquoi ?
    Par Capsule dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 25/01/2007, 22h12

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