List combobox et affiche un message

Bonjour à tous,

J'ai un souci,

lors de la validation d'un nouveau produit, s'il porte la même réference ou le meme Modele, mon message ne ce declenche pas ?

pourquoi ? voir Private Sub nouveauproduit1_Click()

Merci pour votre aide

21s5-essai4.xlsm (476.63 Ko)

Bonsoir

Si j'ai bien compris votre souci, vous pouvez tester avec ce code

Private Sub nouveauproduit1_Click()
Dim derlinge As Integer
Dim lgmod As Integer
Dim Lgref As Long
With Sheets("POMPE A CHALEUR")
    On Error Resume Next
        lgmod = WorksheetFunction.Match(CInt(TextBox3.Value), .Range("C2:C" & .Range("A" & .Rows.Count).End(xlUp).Row), 0)
        If lgmod > 0 Then
            Lgref = WorksheetFunction.Match(CLng(TextBox5.Value), .Range("E2:E" & .Range("A" & .Rows.Count).End(xlUp).Row), 0)
            If Lgref > 0 Then
                MsgBox "La fiche de " & TextBox5 & " " & TextBox3 & " existe déjà." & Chr(13) & "Vous ne pouvez que la modifier.", 16
                Exit Sub
            End If
        End If
    On Error GoTo 0
        If MsgBox("confirmez-vous l'ajout des données?", vbYesNo, "confirmation") = vbYes Then
            derligne = .Range("A" & .Rows.Count).End(xlUp).Row + 1
            For i = 1 To 7
                .Cells(derligne, i) = Controls("TextBox" & i).Value
            Next i
        End If
End With
End Sub

Attention à bien mettre les points ou le nom de la feuille devant Rows.count sans quoi vous risquez de considérer les lignes de la feuille active au lieu de la feuille concernée

Si ok et terminé lors de votre réponse, merci de clôturer le fil en cliquant sur le V vert à coté du bouton EDITER

Cordialement

Bonjour Dan et merci beaucoup cela fonctionne

j'ai une question, quand je lance mon userform1 sur ma page POMPE A CAHALEUR

ma combobox1 affiche bien tous mes articles.

Mais lorsque je me met sur la feuille Devis et lance mon userform1

ma combobox1 n'affiche qu'une partie de la liste des articles.

Pourquoi ? merci pour ton aide je suis novice en vba et j'essaye de comprendre

Merci à tous

Bonjour

Dans ton usf

xlUp par XlDown

Private Sub UserForm_initialize()
    With Sheets("POMPE A CHALEUR")
        ComboBox1.List = .Range("A2:A" & Range("A" & Rows.Count).End(xlDown).Row).Value
    End With
End Sub

crdlt,

André

Bonjour André et merci pour ta réponse

Mais quand je souhaite utiliser l'ascenseur de la combobox1 ma liste disparaît ?

Merci

Re,

apparemment là cela doit être bon

Private Sub UserForm_initialize()
Dim j As Long
  With Sheets("POMPE A CHALEUR")
    For j = 2 To .Range("A" & .Rows.Count).End(xlUp).Row             ' => pour lister les code de commande
     ComboBox1.AddItem .Cells(j, "A") 'Ajoute les valeurs des cellules
   Next j
      'With Sheets("POMPE A CHALEUR")
     '   ComboBox1.List = .Range("A2:A" & Range("A" & Rows.Count).End(xlDown).Row).Value
    End With
End Sub

crdlt,

André

20s5-essai5.xlsm (480.67 Ko)

C'est Parfait Grand merci

J'ai une derniere question pour mon Boutton "supprimer1"

Je souhaite effacer la dernière ligne produit ajouter sur ma feuille devis au cas ou je me trompe dans ma selection de produit

mais je ne doit jamais doit toujours conserver mes lignes 1 à 8 sans jamais les effacer ?

Merci

Re,

à tester (sauvegarder avant la manipulation)

EDIT : à améliorer

Private Sub supprimer1_Click()

'déclaration de variable
  Dim DernLigne As Long

     If MsgBox("Etes-vous certain de vouloir supprimer la ligne ?", vbYesNo, "Demande de confirmation") = vbYes Then
 With Sheets("DEVIS")
'insérer infos en dernière ligne
  DernLigne = Range("A" & Rows.Count).End(xlUp).Row
'déclarer contenu des cellules
  Range("A" & DernLigne) = Empty
    Range("B" & DernLigne) = ""
    Range("C" & DernLigne) = ""
    Range("D" & DernLigne) = ""
    Range("E" & DernLigne) = ""
    Range("F" & DernLigne) = ""
    Range("G" & DernLigne) = ""
    Range("H" & DernLigne) = ""
    Range("I" & DernLigne) = ""
    Range("J" & DernLigne) = ""
End With
    Sheets("DEVIS").Range("A9").Select

  End If

End Sub

crdlt,

André

Re

Bonjour Dan et merci beaucoup cela fonctionne

j'ai une question, quand je lance mon userform1 sur ma page POMPE A CAHALEUR

ma combobox1 affiche bien tous mes articles.

Mais lorsque je me met sur la feuille Devis et lance mon userform1

ma combobox1 n'affiche qu'une partie de la liste des articles

Comme je vous l'ai dit dans mon courrier il faut mettre les points devant RANGE et ROWS.COUNT surtout si vous appeler l'USF depuis une autre feuille

Private Sub UserForm_initialize()
    With Sheets("POMPE A CHALEUR")
        ComboBox1.List = .Range("A2:a" & .Range("A" & .Rows.Count).End(xlUp).Row).Value
    End With
End Sub

Cordialement

Bonjour Dan et merci tes réponses également,

Concernant toujours mon bouton, Supprimer1

Cela fonctionne merci André, mais par contre à chaque que je clique ça efface et je souhaiterai qu'il ne continue plus son action sur les lignes 8,7,6,5,4,3,2,1

Y a t'il un moyen ?

Merci

re

Pour le bouton Supprimer

Private Sub supprimer1_Click()
'déclaration de variable
Dim DernLigne As Integer
If MsgBox("Etes-vous certain de vouloir supprimer la ligne ?", vbYesNo, "Demande de confirmation") = vbYes Then
    With Sheets("DEVIS")
    'insérer infos en dernière lignei
        DernLigne = .Range("A" & .Rows.Count).End(xlUp).Row
        If DernLigne > 8 Then
            'déclarer contenu des cellules
            .Range("A" & DernLigne & ":H" & DernLigne).ClearContents
        Else: MsgBox " il n' y a pas de ligne à supprimer !"
        End If
        .Range("A9").Select
    End With
End If
End Sub

Attention, il faut absolument supprimer les lignes fusionnées en bas de page (Ligne 59 et 60) Sans quoi le code ira supprimer ces deux lignes.

Evitez les cellules fusionnées, comme la colonne I et J, cela n'apporte rien au fichier sauf des soucis dans les codes

Cordialement

Re,

oki merci beaucoup Dan pour la rectification

crdlt,

André

Merci beaucoup a vous deux

Bonne Soirée

Re

Suite aux modifs pourquoi maintenant mon bouton "CommandButton1" pour l'enregistrement des modification

ne fonctionne plus ?? Elle ne sont plus prisent en compte

Merci

10s5-essai4.xlsm (483.54 Ko)

Re,

chez moi cela fonctionne la modification dans la feuille Pompe à chaleur fonctionne

' Modification
Private Sub CommandButton1_Click()
    flag = 1
    With Sheets("POMPE A CHALEUR")
        ln = .Range("A2:A" & .Range("A" & Rows.Count).End(xlUp).Row).Find(ComboBox1, lookat:=xlWhole).Row
        For i = 1 To 7
            .Cells(ln, i) = Controls("TextBox" & i).Value
            Controls("TextBox" & i).Value = ""
        Next i
        ComboBox1.ListIndex = -1
    End With
    MsgBox "La modification a été prise en compte."
End Sub

Mince,

as tu une autre code sur le même principe que l'ajout de produit bouton "nouveauproduit1"

Merci

Re,

cela fonctionne Si :

En désactivant la Combox1 change (listing) en mettant devant (')

' listing
Private Sub ComboBox1_Change()
   '  If flag = 1 Then
   '     flag = 0
    '    Exit Sub
    'End If
    'With Sheets("POMPE A CHALEUR")
     '   ln = .Range("A2:A" & .Range("A" & Rows.Count).End(xlUp).Row).Find(ComboBox1, lookat:=xlWhole).Row
      '  For i = 1 To 7
       '     Controls("Textbox" & i) = .Cells(ln, i).Value
       ' Next i
    ' End With
End Sub

*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

Nouveau produit (inchangé !)

Private Sub nouveauproduit1_Click()
Dim derlinge As Integer
Dim lgmod As Integer
Dim Lgref As Long
With Sheets("POMPE A CHALEUR")
    On Error Resume Next
        lgmod = WorksheetFunction.Match(CInt(TextBox3.Value), .Range("C2:C" & .Range("A" & .Rows.Count).End(xlUp).Row), 0)
        If lgmod > 0 Then
            Lgref = WorksheetFunction.Match(CLng(TextBox5.Value), .Range("E2:E" & .Range("A" & .Rows.Count).End(xlUp).Row), 0)
            If Lgref > 0 Then
                MsgBox "La référence " & TextBox5 & " et le modèle " & TextBox3 & " existe déjà." & Chr(13) & "Vous ne pouvez que la modifier.", 16
                Exit Sub
            End If
        End If
    On Error GoTo 0
        If MsgBox("confirmez-vous l'ajout des données?", vbYesNo, "confirmation") = vbYes Then
            derligne = .Range("A" & .Rows.Count).End(xlUp).Row + 1
            For i = 1 To 7
                .Cells(derligne, i) = Controls("TextBox" & i).Value
            Next i
        End If
End With
End Sub

tu pourras ajouter des Nouveaux produits dans pompe à chaleur

bon aucune idée pourquoi du comment après

Trouvé.....merci pour ta réponse

En fait je me basais sur la modif de la N°2......

d'ou : ln = .Range("A2:A" & .Range("A" & Rows.Count).End(xlUp).Row).Find(ComboBox1, lookat:=xlWhole).Row......

J'ai changé en : ln = .Range("A1:A" & .Range("A" & Rows.Count).End(xlUp).Row).Find(ComboBox1, lookat:=xlWhole).Row...........

Ouf...........encore merci

Bonne soirée

Ok merci toi aussi

bonne fin de soirée

Bonjour André13 et DAN et au forum,

Je continue avec mon fichier et j'essaie de construire mon onglet "Chaudiere Bois Granule",

j'ai réussie à charger la list dans ma combobox2 mais l'affichage dans les textbox concernées ne fonctionne pas ?

Merci à vous

15s5-essai4.xlsm (493.82 Ko)
Rechercher des sujets similaires à "list combobox affiche message"