Problème pour afficher un UserForm en fonction de la valeur d'une cellule

Bonjour,

Je viens vers vous aujourd'hui car je rencontre un petit soucis avec une macro. En faite actuellement pour commencer j'affiche un UserForm où il faut rentrer la référence d'un produit, ensuite on rentre une date, puis les différentes mesures. On clique sur valider pour coller l'ensemble des données récupéré dans le tableau de la feuille Data. Et cela devrait afficher le UserForm CONFORME si la valeur dans la cellule W14 est égal à OK, autrement si la valeur est égal à NOK, alors on affiche le UserForm NON_CONFORME.

Le problème que je rencontre c'est que au moment d'afficher soit le UserForm CONFORME ou alors le NON_CONFORME la valeur de W14 est nul

, je penses que j'ai fait quelque chose qui ne va pas car tout ce suit dans mon code.

Je vous mets à disposition le code et le fichier ci-dessous si vous avez un peu de temps pour mon problème.

En vous remerciant.
Cordialement
MikaG

Private Sub Annuler_Bouton_Click()

End Sub

Private Sub Date_TextBox_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Dim EnteredDate As Date

    ' Vérifie si la saisie peut être convertie en une date valide
    If Not IsDate(Me.Date_TextBox.Value) Then
        MsgBox "Format de date invalide. Veuillez utiliser le format jj/mm/aaaa.", vbExclamation, "Erreur de format"
        Me.Date_TextBox.SetFocus ' Place le focus de nouveau sur la TextBox
        Cancel = True ' Annule la perte de focus
    Else
        ' Si la saisie est une date valide, convertissez-la en format de date souhaité (jj/mm/aaaa)
        EnteredDate = CDate(Me.Date_TextBox.Value)
        Me.Date_TextBox.Value = Format(EnteredDate, "dd/mm/yyyy")
    End If
End Sub

Private Sub Valider_Bouton_Click()
    ' Sauvegarder le contenu de la Date_TextBox dans une variable
    Dim contenu_Date_TextBox As Date
    contenu_Date_TextBox = DateValue(Date_TextBox.Value) ' Assurez-vous que la valeur est une date valide

    ' Affecter la date à la cellule F13
    Sheets("Data").Range("F13").Value = contenu_Date_TextBox

    ' Définir le format de la cellule F13 au format "jj/mm/aaaa"
    Sheets("Data").Range("F13").NumberFormat = "dd/mm/yyyy"

    ' ---------- MESURE 1 ----------

    ' Sauvegarder le contenu de la TextBox Centre_R1_TextBox dans une variable (assumant que le contenu est numérique)
    Dim contenu_Centre_R1_TextBox As Double
    contenu_Centre_R1_TextBox = CDbl(Centre_R1_TextBox.Value)

    ' Affecter la valeur à la cellule H13
    Sheets("Data").Range("H13").Value = contenu_Centre_R1_TextBox

    ' Sauvegarder le contenu de la TextBox Centre_R2_TextBox dans une variable (assumant que le contenu est numérique)
    Dim contenu_Centre_R2_TextBox As Double
    contenu_Centre_R2_TextBox = CDbl(Centre_R2_TextBox.Value)

    ' Affecter la valeur à la cellule H13
    Sheets("Data").Range("I13").Value = contenu_Centre_R2_TextBox

    ' Sauvegarder le contenu de la TextBox CentreBis_R1_TextBox dans une variable (assumant que le contenu est numérique)
    Dim contenu_CentreBis_R1_TextBox As Double
    contenu_CentreBis_R1_TextBox = CDbl(CentreBis_R1_TextBox.Value)

    ' Affecter la valeur à la cellule H13
    Sheets("Data").Range("J13").Value = contenu_CentreBis_R1_TextBox

    ' Sauvegarder le contenu de la TextBox CentreBis_R2_TextBox dans une variable (assumant que le contenu est numérique)
    Dim contenu_CentreBis_R2_TextBox As Double
    contenu_CentreBis_R2_TextBox = CDbl(CentreBis_R2_TextBox.Value)

    ' Affecter la valeur à la cellule H13
    Sheets("Data").Range("K13").Value = contenu_CentreBis_R2_TextBox

    ' ---------- MESURE 2 ----------

    ' Sauvegarder le contenu de la TextBox Centre_R1_TextBox dans une variable (assumant que le contenu est numérique)
    Dim contenu_Centre_R1_TextBox2 As Double
    contenu_Centre_R1_TextBox2 = CDbl(Centre_R1_TextBox2.Value)

    ' Affecter la valeur à la cellule H13
    Sheets("Data").Range("H14").Value = contenu_Centre_R1_TextBox2

    ' Sauvegarder le contenu de la TextBox Centre_R2_TextBox dans une variable (assumant que le contenu est numérique)
    Dim contenu_Centre_R2_TextBox2 As Double
    contenu_Centre_R2_TextBox2 = CDbl(Centre_R2_TextBox2.Value)

    ' Affecter la valeur à la cellule H13
    Sheets("Data").Range("I14").Value = contenu_Centre_R2_TextBox2

    ' Sauvegarder le contenu de la TextBox CentreBis_R1_TextBox dans une variable (assumant que le contenu est numérique)
    Dim contenu_CentreBis_R1_TextBox2 As Double
    contenu_CentreBis_R1_TextBox = CDbl(CentreBis_R1_TextBox2.Value)

    ' Affecter la valeur à la cellule H13
    Sheets("Data").Range("J14").Value = contenu_CentreBis_R1_TextBox

    ' Sauvegarder le contenu de la TextBox CentreBis_R2_TextBox dans une variable (assumant que le contenu est numérique)
    Dim contenu_CentreBis_R2_TextBox2 As Double
    contenu_CentreBis_R2_TextBox2 = CDbl(CentreBis_R2_TextBox2.Value)

    ' Affecter la valeur à la cellule H13
    Sheets("Data").Range("K14").Value = contenu_CentreBis_R2_TextBox2

    ' ---------- MESURE 3 ----------

    ' Sauvegarder le contenu de la TextBox Centre_R1_TextBox dans une variable (assumant que le contenu est numérique)
    Dim contenu_Centre_R1_TextBox3 As Double
    contenu_Centre_R1_TextBox3 = CDbl(Centre_R1_TextBox3.Value)

    ' Affecter la valeur à la cellule H13
    Sheets("Data").Range("H15").Value = contenu_Centre_R1_TextBox3

    ' Sauvegarder le contenu de la TextBox Centre_R2_TextBox dans une variable (assumant que le contenu est numérique)
    Dim contenu_Centre_R2_TextBox3 As Double
    contenu_Centre_R2_TextBox3 = CDbl(Centre_R2_TextBox3.Value)

    ' Affecter la valeur à la cellule H13
    Sheets("Data").Range("I15").Value = contenu_Centre_R2_TextBox3

    ' Sauvegarder le contenu de la TextBox CentreBis_R1_TextBox dans une variable (assumant que le contenu est numérique)
    Dim contenu_CentreBis_R1_TextBox3 As Double
    contenu_CentreBis_R1_TextBox3 = CDbl(CentreBis_R1_TextBox3.Value)

    ' Affecter la valeur à la cellule H13
    Sheets("Data").Range("J15").Value = contenu_CentreBis_R1_TextBox3

    ' Sauvegarder le contenu de la TextBox CentreBis_R2_TextBox dans une variable (assumant que le contenu est numérique)
    Dim contenu_CentreBis_R2_TextBox3 As Double
    contenu_CentreBis_R2_TextBox3 = CDbl(CentreBis_R2_TextBox3.Value)

    ' Affecter la valeur à la cellule H13
    Sheets("Data").Range("K15").Value = contenu_CentreBis_R2_TextBox3

    ' ---------- VERIFICATION CONFORMITE ----------

    'Dim ws As Worksheet
    'Dim cellU13 As Range
    'Dim cellU14 As Range
    'Dim cellU15 As Range
    'Dim cellW14 As Range

    ' Spécifiez la feuille de calcul sur laquelle vous souhaitez effectuer la vérification
    'Set ws = ThisWorkbook.Sheets("Data")

    ' Spécifiez les cellules à vérifier
    'Set cellU13 = ws.Range("U13")
    'Set cellU14 = ws.Range("U14")
    'Set cellU15 = ws.Range("U15")
    'Set cellW14 = ws.Range("W14")

    ' Vérifie si les trois cellules sont égales à "Conforme"
    'If cellU13.Value = "Conforme" And cellU14.Value = "Conforme" And cellU15.Value = "Conforme" Then
        ' Si toutes sont conformes, écrire "Ok" dans Z13
        'cellW14.Value = "OK"
    'Else
        ' Sinon, écrire "NOK" dans Z13
        'cellW14.Value = "NOK"
    'End If

    Dim contenuW14 As String
    contenuW14 = Range("W14").Value
    MsgBox "Le contenu de la cellule W14 est : " & contenuW14, vbInformation

    ' ---------- CHARGER USERFORM EN FONCTION DE LA CONFORMITE ----------

    If Range("W14").Value = "OK" Then
        CONFORME.Show
    ElseIf Range("W14").Value = "NOK" Then
        NON_CONFORME.Show
    Else
        MsgBox "La valeur de la cellule W14 n'est ni 'OK' ni 'NOK'.", vbExclamation
    End If

    ' Fermer le UserForm en cours
    Me.Hide
End Sub

Bonjour MikaG

Pour commencer vous pouvez modifier le début de votre code par

Private Sub Valider_Bouton_Click()
  ' Avec la feuille
  With ThisWorkbook.Sheets("Data")
    ' Affecter la date à la cellule F13
    .Range("F13").Value = CDate(Date_TextBox.Value)
    ' Définir le format de la cellule F13 au format "jj/mm/aaaa"
    .Range("F13").NumberFormat = "dd/mm/yyyy"
    ' Affecter les valeurs
    ' ---------- MESURE 1 ----------
    If IsNumeric(Me.Centre_R1_TextBox) Then .Range("H13").Value = CDbl(Centre_R1_TextBox)
    If IsNumeric(Me.Centre_R2_TextBox) Then .Range("I13").Value = CDbl(Centre_R2_TextBox)
    If IsNumeric(Me.CentreBis_R1_TextBox) Then .Range("J13").Value = CDbl(CentreBis_R1_TextBox)
    If IsNumeric(Me.CentreBis_R2_TextBox) Then .Range("K13").Value = CDbl(CentreBis_R2_TextBox)
    ' ---------- MESURE 2 ----------
    If IsNumeric(Me.Centre_R1_TextBox2) Then .Range("H14").Value = CDbl(Centre_R1_TextBox2)
    If IsNumeric(Me.Centre_R2_TextBox2) Then .Range("I14").Value = CDbl(Centre_R2_TextBox2)
    If IsNumeric(Me.CentreBis_R1_TextBox2) Then .Range("J14").Value = CDbl(CentreBis_R1_TextBox2)
    If IsNumeric(Me.CentreBis_R2_TextBox2) Then .Range("K14").Value = CDbl(CentreBis_R2_TextBox2)
    ' ---------- MESURE 3 ----------
    If IsNumeric(Me.Centre_R1_TextBox3) Then .Range("H15").Value = CDbl(Centre_R1_TextBox3)
    If IsNumeric(Me.Centre_R2_TextBox3) Then .Range("I15").Value = CDbl(Centre_R2_TextBox3)
    If IsNumeric(Me.CentreBis_R1_TextBox3) Then .Range("J15").Value = CDbl(CentreBis_R1_TextBox3)
    If IsNumeric(Me.CentreBis_R2_TextBox3) Then .Range("K15").Value = CDbl(CentreBis_R2_TextBox3)
  End With

Ensuite, il est normal que W4 ne vous retourne rien, puisqu'il n'y a rien dans cette cellule dans la feuille "Test"

A+

Bonjour,

Tout d'abords merci pour votre réponse !
J'ai ensuite étudier votre morceau de code et effectivement c'est plus efficace et optimisé.
Enfin, évidemment je n'avais pas remarqué que je ne donnais pas l'instruction d'aller chercher dans la bonne feuille .

Je vous remercie pour votre aide !
Cordialement
MikaG

Rechercher des sujets similaires à "probleme afficher userform fonction valeur"