Macro qui plante à la validation d'un formulaire

Bonjour à tous,

J'ai actuellement un petit problème sur ma macro que je développe.

Celle-ci est composé de trois UserForm, UserForm1, UserForm2 et UserForm3.

Depuis mon UserForm1, via le bouton Ajouter (de l'onglet liste) j'appelle le UserForm2.

Je remplis les champs du UserForm2 puis valide. Forcement ça ne fonctionne pas mais surtout ça plante mon excel et donc le redémarre.

En revanche j’exécute directement le UserForm2 (sans passer par le UserForm1), cela fonctionne parfaitement.

Je vous joins mon fichier, en espérant que vous puissiez m'aider sur le problème !

Merci par avance.

13classeur1-1.xlsm (47.38 Ko)

Bonjour thibaultcar

Le code associé à ton bouton "ajouter" indique qu'il ouvre soit l'userform2 ou 3 suivant que la CheckBox "Ajout de masse" soit validée ou pas.

En aucun cas le bouton "ajouter" ouvre directement l'userform2

Le code devrait correspondre à ceci

Private Sub AddListe_Button_Click()
UserForm2.Show      
End Sub

Bonjour Thibaultcar le forum

chez moi cela fonctionne parfaitement quand tu cliques ajouter, tu ouvres bien l'userform et quand tu cliques appliquer tu ajoutes la ligne dans la feuille!!!!

ton fichier en retour tu cliques ouvrir

a+

papou

11thibaultcar-v1.xlsm (47.74 Ko)

Bonjour !

Merci de ta réponse. En effet j'ai pas préciser que en fonction de la valeur de la CheckBox, ce la ouvre le UserForm2 ou userForm3...

Dans l'idée ou tu ne coches pas la CheckBox et que tu fais ajouter et ensuite tu valides le formulaire d'ajout (le UserForm2) (sans pour autant rentrer des valeurs dans les textbox, combox, etc. cela doit à minima ajouter "EN STOCK" dans la feuille excel) la macro plante et excel redémarre...

Bonjour Partec !

En effet avec ton bouton ouvrir cela fonctionne.

Maintenant, j'ai fait en sorte que le quand tu ouvres le fichier, cela execute le UserForm1. hors la j'ai une erreur.

2018 09 12 11 51 32 thibaultcar v1 xlsm mode protege excel

Re thibaultcar le forum

bah oui si tu n'expliques pas tout on ne peut pas le deviner

je regarde, en fait tu veux lancer userform1 à l'ouverture du fichier??

a+

papou

Re thibaultcar le forum

chez moi cela ne plante pas, mais le fichier quand tu l'ouvres il est ou?? tu l'enregistres sur ton bureau et tu l'ouvres après??

il ne faut pas l'ouvrir en temporaire

de plus le message tu l'as quand?? lors de l'ouverture ou au clique sur appliquer??

a+

papou

Déjà l'Userform1 plante à l'ouverture du fichier donc dans ThisWorkbook modifier le code pour lire :

Private Sub Workbook_Open()
Sheets("EquipementsFeuil").Activate
UserForm1.Show vbmodeless
End Sub

soit sélection de la feuille "EquipementsFeuil" puis ouverture de l'Userform1

Dans l'userfom1 modification code bouton "Ajouter" pour lire

Private Sub AddListe_Button_Click()
Unload Me 'Fermeture de l'userform1
    If AddMasseListe_CheckBox.Value = True Then
            UserForm3.Show vbModeless
        Else
            UserForm2.Show vbModeless
        End If
End Sub

Dans l'Userform2 modification code bouton "Appliquer" pour lire :

Private Sub Appliquer_CommandButton_Click()
Dim Nlig

   'Ajoute le nouvel enregistrement suite à la dernière ligne
    Nlig = Sheets("EquipementsFeuil").Range("B65536").End(xlUp).Row + 1
    MsgBox Nlig

With Sheets("EquipementsFeuil")

    If Stock_OptionButton.Value = True Then
    .Range("A" & Nlig).Value = "EN STOCK"
    End If

    If EnService_OptionButton = True Then
        .Range("A" & Nlig).Value = "EN SERVICE"
    End If

    If Spare_OptionButton = True Then
       .Range("A" & Nlig).Value = "SPARE"

    Else
       Sheets("EquipementsFeuil").Range("A" & Nlig).Value = "HORS SERVICE"
    End If

End With

Unload Me
End Sub

A mon niveau cela fonctionne

Petite erreur de code pour le bouton Appliquer de l'Userform2 modifier pour lire

Private Sub Appliquer_CommandButton_Click()
Dim Nlig

   'Ajoute le nouvel enregistrement suite à la dernière ligne
    Nlig = Sheets("EquipementsFeuil").Range("B65536").End(xlUp).Row + 1
    MsgBox Nlig

With Sheets("EquipementsFeuil")

    If Stock_OptionButton.Value = True Then
    .Range("A" & Nlig).Value = "EN STOCK"
    End If

    If EnService_OptionButton = True Then
    .Range("A" & Nlig).Value = "EN SERVICE"
    End If

    If Spare_OptionButton = True Then
    .Range("A" & Nlig).Value = "SPARE"
    End If

    If HS_OptionButton = True Then
       .Range("A" & Nlig).Value = "HORS SERVICE"
    End If

End With

Unload Me
End Sub

bonjour emilelio le forum

je ne savais pas que UserForm2.Show vbModeless était obligatoire, ou alors c'est de ce matin?????

a+

papou

Bonjour Papou

En effet ce n'est pas obligatoire.

En tout cas une chose est sûre, quand il y a le UserForm3.Show vbModeless ça fonctionne.

Quelle est le but de cette valeur ?

Et surtout, je suis obligé d'afficher seulement un seul UserForm à la fois ? C'est à dire Unload Userform1 à l'affichage du UserForm2 ?

Re thibaultcar le forum

je t'ai posé une question ce matin je n'ai pas eu la réponse alors pour pouvoir continuer à ta répondre et te trouver le pourquoi exactement, il faut aussi que tu répondes aux questions que l'on te pose!!

A+

Papou

Bonjour, à tous.

En testant le premier fichier de thibaultcar je plante aussi.

Par contre le fichier de Paritec fonctionne nickel et le userform1 se lance bien au démarrage.

Je n'ai pas capté ce qu'il y a de changé entre les deux

Bonjour Xmenpl le forum

tu peux me dire à quel moment tu as l'erreur STP c'est à l'ouverture ou au click sur le bouton ajouter

n'ayant pas de réponse de Thibaultcar je te remercié d'avance

a+

papou

Re paritec je vois que tu aimes bien comprend aussi

sur le fichier de Thibault :

Au moment ou on utilse le bouton appliquer ( à partir du userform2 )

une message box affiche le numéro de ligne et là …. plantage excel fermé puis rédémarrage

Sur ton fichier pas de souci. ( test sur excel 2013 )

Re xmempl le forum

oui moi j'aime aller au bout du raisonnement

donc tu affiches les msgbox et tu plantes?? je ne vois pas le pourquoi, mais moi par contre j'ai viré le msgbox dans la macro du fichier de Thibaultcar dans le fichier que j'ai renvoyé!!!

essaye voir STP de rajouter dans le code du bouton le msgbox dans le fichier que j'ai renvoyé ce matin pour tester

a+

Papou

Le code qui se trouve dans son classeur au premier post

Il est en grande partie annulé par des appostrophes :

Private Sub Appliquer_CommandButton_Click()
   'Ajoute le nouvel enregistrement suite ? la derni?re ligne
    Nlig = Sheets("EquipementsFeuil").Range("B65536").End(xlUp).Row + 1
    MsgBox Nlig

    ''''AJOUT DES NOUVELLES VALEURS
    'D?termine quel est la s?lection de l'?tat de stock
    If Stock_OptionButton.Value = True Then
       Sheets("EquipementsFeuil").Range("A" & Nlig).Value = "EN STOCK"

        ''''TEST DE LA VALEUR
        'MsgBox Stock_OptionButton.Value

    ElseIf EnService_OptionButton = True Then
        Sheets("EquipementsFeuil").Range("A" & Nlig).Value = "EN SERVICE"

    ElseIf Spare_OptionButton = True Then
        Sheets("EquipementsFeuil").Range("A" & Nlig).Value = "SPARE"

    Else
       Sheets("EquipementsFeuil").Range("A" & Nlig).Value = "HORS SERVICE"
    End If

    'Sheets("EquipementsFeuil").Range("B" & Nlig).Value = UCase(Reference_ComboBox.Text)
    'Sheets("EquipementsFeuil").Range("C" & Nlig).Value = UCase(Categorie_ComboBox.Text)
    'Sheets("EquipementsFeuil").Range("D" & Nlig).Value = UCase(Type_ComboBox.Text)
    'Sheets("EquipementsFeuil").Range("E" & Nlig).Value = UCase(Constructeur_ComboBox.Text)
    'Sheets("EquipementsFeuil").Range("F" & Nlig).Value = UCase(Modele_ComboBox.Text)
    'Sheets("EquipementsFeuil").Range("G" & Nlig).Value = UCase(SN_TextBox.Text)
    'Sheets("EquipementsFeuil").Range("H" & Nlig).Value = UCase(Fournisseur_ComboBox.Text)
    'Sheets("EquipementsFeuil").Range("I" & Nlig).Value = UCase(NumeroFacture_TextBox.Text)
    'Sheets("EquipementsFeuil").Range("J" & Nlig).Value = UCase(DateFacture_TextBox.Text)
    'Sheets("EquipementsFeuil").Range("K" & Nlig).Value = UCase(ClientNom_TextBox.Text)
    'Sheets("EquipementsFeuil").Range("L" & Nlig).Value = UCase(ClientTelephone_TextBox.Text)
    'Sheets("EquipementsFeuil").Range("M" & Nlig).Value = UCase(ClientAdresse_TextBox.Text)
    'Sheets("EquipementsFeuil").Range("N" & Nlig).Value = UCase(ClientCP_TextBox.Text)
    'Sheets("EquipementsFeuil").Range("O" & Nlig).Value = UCase(ClientVille_TextBox.Text)
    'Sheets("EquipementsFeuil").Range("P" & Nlig).Value = UCase(ClientMES_TextBox.Text)

End Sub

J'ai ajouté une appostrophe pour ne pas avoir la message box

mais çà plante quand même.

Re xmempl le forum

oui ce code mais en rajoutant dans le mien de fichier car moi il n'y a plus d'apostrophe et plus de msgbox nblig

a+

papou

Rechercher des sujets similaires à "macro qui plante validation formulaire"