UserForme : Problème avec couleur des cellules

0

Bonjour,

J’ai créé un Userform à l’aide d’un tuto trouvé sur YouTube.

Mais j’aimerais aller légèrement plus loin, à savoir :

Lorsque je valide il remplit bien les cases (jusque-là, pas de souci)

J’aimerais qu’en + il surligne en jaune les cellules ‘’I et J’’. Soit : AchatBox et venteBox

Voici le lien du forum que j’ai utilisé pour m’aider : https://www.youtube.com/watch?v=v58wcXg6dGI

Lien de mon fichier :

https://www.cjoint.com/c/LLjlbQOGjvu


Merci infiniment de votre aide

Bonne journée


Voici ma macro :

Private Sub H_Ajouter_Click()

'Recherche de la première ligne vide

l = 3

While Not IsEmpty(Cells(l, 1))

l = l + 1

Wend

'Saisir le formulaire

Cells(l, 1) = DateBox.Text

Cells(l, 2) = ArticleBox.Text

Cells(l, 7) = CasierBox.Text

Cells(l, 9) = AchatBox.Text

Cells(l, 10) = VenteBox.Text

Cells(l, 17) = DésignationBox.Text

'Remise à zéro du UserForm

DateBox.Text = ""

ArticleBox.Text = ""

CasierBox.Text = ""

AchatBox.Text = ""

VenteBox.Text = ""

DésignationBox.Text = ""

'Cacher la UserForm

UserForm_SAISIE.Hide

End Sub

' Remise à zéro des box

Private Sub H_Fermer_Click()

DateBox.Text = ""

ArticleBox.Text = ""

CasierBox.Text = ""

AchatBox.Text = ""

VenteBox.Text = ""

DésignationBox.Text = ""

UserForm_SAISIE.Hide

End Sub


    Gil Posté le 9 décembre 2022, 12:12
    par Gil
    Répondre
    0

    Bonjour Gil,

    ton fichier en retour : https://www.cjoint.com/c/LLjp41rRfx0

    * clique sur le bouton "Saisir un nouvel article" ➯ le formulaire s'affiche ;
    y'a plus qu'un seul bouton "Ajouter" ; ne t'inquiète pas c'est normal :
    j'ai supprimé le 2ème bouton "Fermer", car tu verras qu'il est inutile ;
    d'ailleurs, tu peux cliquer sur la croix du coin supérieur droit du UF
    pour le fermer (UF = UserForm).

    * appuie sur la touche Echap ➯ le formulaire se ferme ; rien n'a été fait ;
    ça, c'est utile si tu te ravises juste après avoir ouvert le formulaire :
    ça équivaut à un abandon de la saisie.  ;)

    * clique de nouveau sur le bouton "Saisir un nouvel article" ; cette fois,
    on va saisir un article, avec par exemple les données qui suivent.

    * pour la Date, saisis 9/12 ; appuie sur la touche Tab (Tabulation)
    pour passer au champ suivant.

    * pour le N° article, saisis 215128 ; appuie sur Tab
    * pour le Casier, saisis F12 ; Tab
    * pour Prix achat, saisis 34.75 ou 34,75 ; Tab
    * pour Prix vente, saisis 89.99 ou 89,99 (j'ai tenu compte de ta marge et de l'inflation) ; Tab
    * pour Désignation, saisis boîte d'allumettes (eh oui, c'est bien la flambée des prix !) ; Tab

    * note que c'est allé sur  le bouton Ajouter ; appuie sur la touche Entrée ou Espace pour
    valider ; ça ferme le formulaire, et ça affiche les données en ligne 6, avec un fond jaune
    pour i6 et J6.

    -----------------------------------------------------------------------------------------------------------------------

    code VBA de Module1 :

    Sub ShowNouvArt()
      NouvArt.Show
    End Sub

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    code VBA du formulaire NouvArt :

    Option Explicit

    Private Sub tbDate_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
      If KeyAscii = 27 Then Unload Me
    End Sub

    Private Sub cbAjout_Click()
      Dim lig&: Application.ScreenUpdating = 0
      lig = Cells(Rows.Count, 1).End(3).Row + 1
      With Cells(lig, 1)
        If IsDate(tbDate) Then .Value2 = DateValue(tbDate)
        If tbNumArt <> "" Then .Offset(, 1) = tbNumArt
        If tbCasier <> "" Then .Offset(, 6) = tbCasier
        If tbPA <> "" Then .Offset(, 8) = Val(Replace$(tbPA, ",", "."))
        If tbPV <> "" Then .Offset(, 9) = Val(Replace$(tbPV, ",", "."))
        If tbDsg <> "" Then .Offset(, 16) = tbDsg
      End With
      Unload Me
    End Sub

    si besoin, tu peux demander une adaptation.
    à te lire pour avoir ton avis.  :)

    rhodo

    rhodo Posté le 9 décembre 2022, 17:43
    par rhodo
    0

    Bonsoir Gil,

    voici une autre version, pour la saisie de plusieurs articles en série :

    https://www.cjoint.com/c/LLktfsowzn0

    * clique sur le bouton "Saisir un nouvel article" ➯ le formulaire s'affiche ;
    j'ai remis le 2ème bouton "Fermer", car il sera utile en fin de saisie.

    * appuie sur la touche Echap ➯ le formulaire se ferme ; rien n'a été fait ;
    c'est utile si on change d'avis et qu'on veut abandonner la saisie ; bien sûr,
    tu aurais pu aussi cliquer sur la croix du coin supérieur droit du UserForm,
    ou cliquer sur le bouton "Fermer".

    * clique de nouveau sur le bouton "Saisir un nouvel article" ; cette fois,
    on va saisir une série exemple de 4 articles ; pour simplifier, les prix
    seront tous des entiers ; mais bien sûr, c'est possible de saisir des
    prix avec 2 chiffres après la virgule (séparateur décimal : point ou
    virgule, au choix)
    .

    * tous les champs sont obligatoires ; un clic sur le bouton "Ajouter" ne fera
    rien si un des champs est vide ; idem si la date est invalide ; après un clic
    sur le bouton "Ajouter" : s'il y a un ou plusieurs champs vides, le curseur
    sera sur le 1er champ vide ; si la date est invalide, le curseur sera sur
    le champ de la date ; si tout est ok : ajout des données sur la feuille.

    * pour passer d'un champ au champ suivant, le plus simple est d'utiliser
    la touche Tab (Tabulation).

    Date : 6/12
    N° Art : 106
    Casier : C6
    Prix achat : 11
    Prix vente : 21
    Dsg : a

    touche Tab ; ça va sur le bouton "Ajouter".

    touche Entrée ; ça ajoute les données sur la feuille de calcul, puis ça
    efface tous les champs du UserForm ; le curseur est sur le champ
    Date : c'est prêt pour la saisie du 2ème article.

    Date : 7/12
    N° Art : 107
    Casier : C7
    Prix achat : 12
    Prix vente : 22
    Dsg : b
    Tab ; Entrée (ou clic sur le bouton "Ajouter")

    Date : 8/12
    N° Art : 108
    Casier : C8
    Prix achat : 13
    Prix vente : 23
    Dsg : c
    clic / Ajouter

    Date : 9/12
    N° Art : 109
    Casier : C9
    Prix achat : 14
    Prix vente : 24
    Dsg : d
    clic / Ajouter

    saisie terminée ➯ comme il n'y a plus d'articles
    à ajouter, clique sur le bouton "Fermer".

    note bien que tous les prix sont sur fond jaune :
    plage i3:J9.

    -----------------------------------------------------------------------------------------------------------------------

    code VBA de Module1 : inchangé.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    code VBA du formulaire NouvArt :

    Option Explicit

    Dim lig&

    Private Sub cbAjout_Click()
      Application.ScreenUpdating = 0
      If Not IsDate(tbDate) Then tbDate.SetFocus: Exit Sub
      If tbNumArt = "" Then tbNumArt.SetFocus: Exit Sub
      If tbCasier = "" Then tbCasier.SetFocus: Exit Sub
      If tbPA = "" Then tbPA.SetFocus: Exit Sub
      If tbPV = "" Then tbPV.SetFocus: Exit Sub
      If tbDsg = "" Then tbDsg.SetFocus: Exit Sub
      With Cells(lig, 1)
        .Value2 = DateValue(tbDate)
        .Offset(, 1) = tbNumArt
        .Offset(, 6) = tbCasier
        .Offset(, 8) = Val(Replace$(tbPA, ",", "."))
        .Offset(, 9) = Val(Replace$(tbPV, ",", "."))
        .Offset(, 16) = tbDsg
      End With
      tbDate = "": tbNumArt = "": tbCasier = "": tbPA = "": tbPV = "": tbDsg = ""
      tbDate.SetFocus: lig = lig + 1: Application.ScreenUpdating = -1
    End Sub

    Private Sub tbDate_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
      If KeyAscii = 27 Then Unload Me
    End Sub

    Private Sub UserForm_Initialize()
      lig = Cells(Rows.Count, 1).End(3).Row + 1
    End Sub

    Private Sub cbClose_Click()
      Unload Me
    End Sub

    rhodo

    rhodo Posté le 10 décembre 2022, 21:04
    par rhodo
    0

    Bonjour Gil,

    voici 2 petites précisions :

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    pour le fichier de mon post du 9 décembre :

    chaque fois qu'on veut saisir un nouvel article : il faut cliquer sur le bouton
    "Saisir un nouvel article", puis le formulaire se ferme automatiquement
    après validation de la saisie des données ; donc pour ajouter 10 articles,
    il faudra cliquer 10× sur le même bouton "Saisir un nouvel article".

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    pour le fichier de mon post du 10 décembre :

    pour ajouter 10 articles, on clique une seule fois sur le bouton "Saisir un
    nouvel article", pour commencer la saisie des données ; à la validation :
    les données du formulaire sont écrites sur la feuille de calcul ; puis les
    champs du formulaire sont effacés et le curseur est sur le champ Date :
    c'est prêt pour la saisie de l'article suivant ; quand la saisie de tous les
    articles est terminée, cliquer sur le bouton "Fermer".

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    perso, je préfère la 2ème version car elle permet très facilement la saisie
    d'une série de plusieurs articles à la suite ; après, c'est selon ses goûts.

    rhodo

    rhodo Posté le 27 décembre 2022, 08:18
    par rhodo

    Si vous n'êtes pas inscrit sur le site, vous pouvez poster librement (en tant qu'invité).
    Pour cela, indiquez un pseudonyme (nom d'utilisateur) et une adresse email :