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 :

ON ERROR RESUME NEXT : besoin d'explications !


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Femme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Novembre 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Novembre 2011
    Messages : 23
    Par défaut ON ERROR RESUME NEXT : besoin d'explications !
    Bonjour
    j'ai développé un fichier VBA EXCEL sur pc avec deux UserForm classiques pour faire une petite base de données (consulter / modifier/ créer /supprimer des "fiches" comme un répertoire).
    Le fichier est en PJ

    L'userform n°2 permet de créer des demandes de réservations.

    Lorsque je crée une "nouvelle demande" ça plante sur MAC excel 2011 (qui sera la machine de l'utilisatrice principale) mais ça enregistre bien les données comme il faut !
    Comme je n'arrive pas à résoudre le BUG j'ai mis des ON ERROR NEXT là où ça semblait poser problème.
    Depuis c'est parfait je peux créer mes demandes tout marche bien sauf qu'au moment de fermer le userform le MAC plante et tout se ferme !!
    J'ai peut être pas pigé un truc sur le ON ERROR RESUME NEXT
    Est-ce qu'il faut ajouter une commande de fin d'instruction après l'avoir utilisé... ? Si mon plantage a été simplement "décalé" comment faire ?? Est-il possible de mettre des ON ERROR RESUME NEXT à la fermeture du formulaire ?? Comment ?

    MERCI DE VOTRE AIDE
    Fichiers attachés Fichiers attachés

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Citation Envoyé par KOUZINE Voir le message
    Comme je n'arrive pas à résoudre le BUG j'ai mis des ON ERROR NEXT là où ça semblait poser problème.
    Le problème est qu'en shuntant l'erreur tu ne résoudras pas le bug, et donc celui-ci peut se propager.
    Cette instruction est à proscrire, personnellement je ne l'utilise que dans un cas, pour la suppression de menus.

    Il faudrait que tu donnes plus d'explications sur le code plutôt qu'un fichier joint que beaucoup de membres n'ouvriront pas.

    Philippe

  3. #3
    Membre averti
    Femme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Novembre 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Novembre 2011
    Messages : 23
    Par défaut
    MERCI BEAUCOUP
    Ce qui est bizarre c'est que sur PC no problem et sur MAC ça bug sans avoir d'effet réél sur le résultat attendu !
    JE VOUS EXPLIQUE LA OU CA BUG
    Mon fichier sert à gérer des salles de répétitions
    Il permet de créer/modifier/consulter les fiches des associations qui répètent mais aussi de créer des demandes de créneaux horaires.

    J'ai donc deux listing sur deux onglets du classeur : celui des Assos avec leurs coordonnées et celui des demandes des Assos.
    Pour chaque listing j'ai un USERFORM (le 1 pour les assos le 2 pour les demandes)

    Une seule demande par ASSO mais possibilité de demander 3 créneaux par demande.

    Lors de la CREATION d'une DEMANDE voici ce qu'il se passe :

    1/ Mon USERFORM contient une COMBOBOX qui est reliée à la feuille des ASSOS (pour chosir l'asso qui fait la demande)

    2/ J'ai donc un LISTINDEX qui me sert à savoir sur quelle ligne de la feuille excel je me situe lorsque je sélectionne une asso
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub comboboxCHERCHER_Change()
    Dim LigneID As Integer
    LigneID = Me.ComboBoxCHERCHER.ListIndex
    Me.TxtID = Sheets("LISTING_ASSOS").Cells(LigneID + 2, 1)
    End Sub
    3/ Pour créer une Demande je cherche donc une ASSOCIATION dans la liste, je remplis les champs et j'enregistre.

    Lorsque j'enregistre :
    > tout d'abord j'affecte sur le listing ASSO certaines valeurs des textbox pour signifier que la demande a été effectuée
    > Puis sur le Listing DEMANDES Si la demande contient 1 créneau je crée une nouvelle ligne dans mon listing demande, si il y a 2 créneaux, je crée 2 lignes etc de façon à avoir ensuite une ligne pour chaque créneau demandé


    Et c'est là que ça BUG !


    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    '*****************************************
    'CLIC SUR ENREGISTRER LA NEW DEMANDE
    '*****************************************
     
    Private Sub CommandButtonCreerDemande_Click()
    'on enregistre que si tous les champs sont remplis
     On Error Resume Next
     
    If Me.ComboBoxNbre.Value = "" Then MsgBox ("Veuillez remplir tous les champs")
     
     
    'SI 1 SEUL CRENEAU DEMANDE
    '*****************************************
     
    If (Me.ComboBoxNbre.Value = 1) Then
            If Me.ComboBoxCHERCHER.Value = "" Or Me.TxtDateDemande.Text = "" Or Me.TxtActivite1.Text = "" Then
            MsgBox ("Veuillez remplir tous les champs")
     
            Else
     
     
     'SUR L ONGLET DES FICHES ASSOS
    'On remplit les champs des demandes
    CreaListingAsso
    Creneau1Save
    FinDeDemande
               End If
                    End If
     
    'SI 2 CRENEAUX DEMANDES
    '*****************************************
     
     
    If (Me.ComboBoxNbre.Value = 2) Then
            If Me.ComboBoxCHERCHER.Value = "" Or Me.TxtDateDemande.Text = "" Or Me.TxtActivite1.Text = "" Or Me.TxtActivite2.Text = "" Then
            MsgBox ("Veuillez remplir tous les champs")
            Else
     
     
     'SUR L ONGLET DES FICHES ASSOS
    'On remplit les champs des demandes
    CreaListingAsso
    Creneau1Save
    Creneau2Save
    FinDeDemande
               End If
                    End If
     
     
    'SI 3 CRENEAUX DEMANDES
    '*****************************************
     
    If (Me.ComboBoxNbre.Value = 3) Then
            If Me.ComboBoxCHERCHER.Value = "" Or Me.TxtDateDemande.Text = "" Or Me.TxtActivite1.Text = "" Or Me.TxtActivite2.Text = "" Or Me.TxtActivite3.Text = "" Then
            MsgBox ("Veuillez remplir tous les champs")
            Else
     
     
     'SUR L ONGLET DES FICHES ASSOS
    'On remplit les champs des demandes
    CreaListingAsso
    Creneau1Save
    Creneau2Save
    Creneau3Save
    FinDeDemande
               End If
                    End If
     
    End Sub
    Voici le détail des raccourcis que j'ai créé car je n'ai pas trouvé d'autre solution:

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    '*****************************************
    'BLOQUER LES COMMANDES SUPPR ET ENREGISTRER
    '*****************************************
     
    Sub FinDeDemande()
    Unload NewDemande
    Unload FORMDemandes
     
    TRIERlaLISTE
    Load FORMDemandes
    FORMDemandes.Show
     
    End Sub
     
     
    '*****************************************
    'Nouvelle DEMANDE : champs sur fiche ASSOS
    '*****************************************
     
    Sub CreaListingAsso()
    'On enregistre dans la fiche asso les champs de la Nouvelle demande
    Dim LigneASSO As Integer
    LigneASSO = Me.ComboBoxCHERCHER.ListIndex
    Sheets("LISTING_ASSOS").Cells(LigneASSO + 2, 86) = "VRAI"
    Sheets("LISTING_ASSOS").Cells(LigneASSO + 2, 87) = Me.TxtDateDemande.Text
    Sheets("LISTING_ASSOS").Cells(LigneASSO + 2, 88) = Me.ComboBoxNbre.Value
    Sheets("LISTING_ASSOS").Cells(LigneASSO + 2, 89) = Me.TxtActivite1.Text
    Sheets("LISTING_ASSOS").Cells(LigneASSO + 2, 90) = Me.TxtActivite2.Text
    Sheets("LISTING_ASSOS").Cells(LigneASSO + 2, 91) = Me.TxtActivite3.Text
     
    End Sub
     
    '*****************************************
    'CRENEAU 1 : Enregistrer sur LISTING_DEMANDES
    '*****************************************
     
    Sub Creneau1Save()
     On Error Resume Next
    'SUR L ONGLET DES DEMANDES
    'On cree une premire ligne pour le creneau 1
    With Sheets("LISTING_DEMANDES")
    .Cells(.Rows.Count, 1).End(xlUp).Offset(1).Value = Me.TxtID.Text
    .Cells(.Rows.Count, 2).End(xlUp).Offset(1).Value = Me.ComboBoxCHERCHER.Value & "_Creneau No1"
    .Cells(.Rows.Count, 3).End(xlUp).Offset(1).Value = Me.TxtDateDemande.Text
    .Cells(.Rows.Count, 4).End(xlUp).Offset(1).Value = Me.ComboBoxNbre.Value
    .Cells(.Rows.Count, 6).End(xlUp).Offset(1).Value = Me.TxtActivite1.Text
    .Cells(.Rows.Count, 24).End(xlUp).Offset(1).Value = "Creneau No1"
    End With
    End Sub
     
     
     
    '*****************************************
    'CRENEAU 2 : Enregistrer sur LISTING_DEMANDES
    '*****************************************
     
    Sub Creneau2Save()
     On Error Resume Next
    With Sheets("LISTING_DEMANDES")
    .Cells(.Rows.Count, 1).End(xlUp).Offset(1).Value = Me.TxtID.Text
    .Cells(.Rows.Count, 2).End(xlUp).Offset(1).Value = Me.ComboBoxCHERCHER.Value & "_Creneau No2"
    .Cells(.Rows.Count, 3).End(xlUp).Offset(1).Value = Me.TxtDateDemande.Text
    .Cells(.Rows.Count, 4).End(xlUp).Offset(1).Value = Me.ComboBoxNbre.Value
    .Cells(.Rows.Count, 6).End(xlUp).Offset(1).Value = Me.TxtActivite2.Text
    .Cells(.Rows.Count, 24).End(xlUp).Offset(1).Value = "Creneau No2"
    End With
    End Sub
     
    '*****************************************
    'CRENEAU 3 : Enregistrer sur LISTING_DEMANDES
    '*****************************************
     
    Sub Creneau3Save()
     On Error Resume Next
    With Sheets("LISTING_DEMANDES")
    .Cells(.Rows.Count, 1).End(xlUp).Offset(1).Value = Me.TxtID.Text
    .Cells(.Rows.Count, 2).End(xlUp).Offset(1).Value = Me.ComboBoxCHERCHER.Value & "_Creneau No3"
    .Cells(.Rows.Count, 3).End(xlUp).Offset(1).Value = Me.TxtDateDemande.Text
    .Cells(.Rows.Count, 4).End(xlUp).Offset(1).Value = Me.ComboBoxNbre.Value
    .Cells(.Rows.Count, 6).End(xlUp).Offset(1).Value = Me.TxtActivite3.Text
    .Cells(.Rows.Count, 24).End(xlUp).Offset(1).Value = "Creneau No3"
    End With
    End Sub

    est-ce que vous me suivez ?? :/
    Merci encore

Discussions similaires

  1. On error resume next
    Par nephhh dans le forum C#
    Réponses: 2
    Dernier message: 26/04/2007, 14h00
  2. [VBA Excel] On error resume next
    Par alex_95 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 02/03/2007, 19h20
  3. [VBA-E] On error resum next
    Par Phenx dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/09/2006, 17h27
  4. On Error Resume Next existe il en java??
    Par the_zurg dans le forum Général Java
    Réponses: 9
    Dernier message: 01/06/2006, 22h38
  5. Réponses: 2
    Dernier message: 28/04/2006, 14h10

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