Format numérique dans un useform

Salut Banzaï,

Moi qui pensait en avoir fini avec ce fichier et non,

Maintenant mon soucis c’est lorsqu’on clique sur le bouton modification, que je modifie une seule textbox j’ai du jaune dans plusieurs cellules qui n’ont pas été modifiées par l’userform. J’ai repéré la partie du code qui pose problème.

userform GESTION_CONTACT

Private Sub ToggleButton1_Click()

If i = 1 Or i = 6 Then

Ws.Cells(ligne, i + 1) = CDate(Me.Controls("TextBox" & i)) ' On écrit la nouvelle valeur

Else

Lorsque je supprime ce code ça fonctionne mais je n’ai plus la conversion des textbox 1 et 6 en nombre.

Bonjour

Cela devient complexe à gérer tous les cas ainsi que les exceptions

Espérons que cela n’amène pas d'autres problèmes

Bonjour Banzaï,

Aprés plusieurs essais,

cette ligne se met en deboquage. dés lors que je modifie une donnée, mas la modification s'opère quand même.

Private Sub ToggleButton1_Click()

If CDate(Me.Controls("TextBox" & i)) <> CDate(Ws.Cells(ligne, i + 1)) Then

Bonjour Banzaï,

Aprés plusieurs essais,

cette ligne se met en deboquage. dés lors que je modifie une donnée, mas la modification s'opère quand même.

Private Sub ToggleButton1_Click()

If CDate(Me.Controls("TextBox" & i)) <> CDate(Ws.Cells(ligne, i + 1)) Then

Bonjour

Avec si peux de renseignements je ne vais pas trouver

Il faut que je sache exactement les démarches à suivre pour arriver à l'erreur

Quel est le message d'erreur ?

Bonjour Banzaï,

En effet je n'ai pas été claire du tout,

Voici le problème, le fichier marche nickel à l'exception de la modification de donnée dans le userfrom GESTION_CONTACT.

Le but est dés qu'un utilisateur modifie une donnée de la colonne D à T la ou les cellules se colories en jaune soit les textbox de 3 à 19.

Le problème est que la première modification se passe bien et aprés il affiche un message d'erreur

"ERREUR D'EXECUTION TYPE 13"

Et voici la ligne qui bloque :

If CDate(Me.Controls("TextBox" & i)) <> CDate(Ws.Cells(ligne, i + 1)) Then

Ex code SAP 47194 ligne 3 je modifie n'importe quoi tout fonctionne

Ex code SAP 49177 ligne 36 je modifie la cétégorie client le message apparé.

J'espère que tu vas comprendre mes problèmes, car tout fonctionne

type 13

Bonjour

Cela vient que dans la TextBox ou/et dans la cellule il n'y ait pas de date

Modifies le code

  For i = 1 To 19
    If Me.Controls("TextBox" & i).Visible = True Then
      ' Si la nouvelle valeur est différente de l'ancienne valeur
      If i = 1 Or i = 6 Then
      If IsDate(Me.Controls("TextBox" & i)) And IsDate(Ws.Cells(ligne, i + 1)) Then
          If CDate(Me.Controls("TextBox" & i)) <> CDate(Ws.Cells(ligne, i + 1)) Then
            Ws.Cells(ligne, i + 1) = CDate(Me.Controls("TextBox" & i))   ' On écrit la nouvelle valeur
            If i > 2 Then Ws.Range("C" & ligne) = "X"       ' On note "Modification"
          End If
        End If

Corrigé dans cette version

Merci d'être aussi rapide,

j'ai testé le fichier plus de message d'erreur.

Mais toujours ce problème de cellule qui se mettent en jaune malgrés qu'elles ne soient pas modifiées. J'ai remarqué c'est dés que je modifie quelque chose qui est après la colonne G

la première fois ça fonctionne très bien et après pour une seule modification d'une textbox plusieurs cellules sont en jaune.

Ex code SAP 62967 modification apportée sur la colonne NOMS 2 tout est OK

Ex code SAP 90446 modification apportée sur la colonne NOMS 2 et la il met en jaune le NOMS 2 et la colonne K = CP

Sur la feuille FICHIER DE BASE il y à un code

C'est peut être celui ci qui pose problème.

jaune

Banzaï

Voici un exemple de fichier que j'utilisais avant de passer prochainement par le formulaire.

En colonne C formule qui Met une (X) qui si il y a du jaune de la colonne D à T. Dés que l'on modifie une cellule elle se met en jaune automatiquement.

Voici ce que j'aimerai faire avec le formulaire.GESTION_CONTACT. On y est presque je le sais.

Bonjour

C'est normal

Dans la cellule K9 tu as un nombre(28000) que tu compare avec du texte ( "28 000" ) ---> pas glop alors jaune

Dans la cellule K14 tu as un texte ( "28 100" ) que tu compares avec du texte ( "28 100" ) -> Glop alors pas jaune

A tester

Bonjour Banzaï,

Génial pour le jaune selon la textbox modifiée ça fonctionne du tonnerre.

Par contre lorsque je fais une recherche sur le userform1 et qu'il ne trouve pas la donnée il met erreur d'exécution 381 embêtant car l'utilsateur devra déboguer relancer le processus. Peut-on faire s'il ne trouve pas mettre un msg (pas de réponse pour ce critère de recherche).

Cordialement Samy

type 13

Bonjour

Désolé pas trouvé ce code dans l'Userform1

Bonjour Banzaï,

Désolé je n'ai pas été très clair dans mon explication.

A l’ouverture du fichier un userform s’ouvre il faut choisir « modification » puis une fois le userfom modification ouvert tu vas dans "mot clé cherché" et tu inscris quelque chose du type sdedezz qui ne figure pas dans le fichier et là il va déboguer.

Le userform modification = userform1

L’erreur se trouve sur le bouton OK

Ligne : ligne = Me.ListBox1.List(pointeur, 1)

Idéalement je souhaiterai qu’il mette un msg tu type les données inscrites ne corresponde à aucun client par ex.

Bonjour

Je ne sais si je dois en rire ou m'agacer

As tu eu l'idée de suivre les instructions

belsamis010975 a écrit :

A l’ouverture du fichier un userform s’ouvre il faut choisir « modification »

Et bien non c'est "Consultation"

belsamis010975 a écrit :

quelque chose du type sdedezz qui ne figure pas dans le fichier et là il va déboguer.

Non tu peux écrire ce que tu veux il ne débogue pas car il ne fait pas de recherche lors des modifications du TextBox

belsamis010975 a écrit :

Le userform modification = userform1

Et bien non l'Userform modification s'appelle "GESTION_CONTACTS"

Et l'userform1 s'appelle "Userform1" et c'est dans celui-ci que le plantage se produit, contrairement à ce que tu as indiqué dans ton message précédent

Ceci étant précisé

Modifies la fin de la procédure Private Sub B_ok_Click()

     Loop While Not c Is Nothing And c.Address <> premier
   End If
   If Me.ListBox1.ListCount > 0 Then
    pointeur = 0
    ligne = Me.ListBox1.List(pointeur, 1)
    affiche
  Else
    MsgBox "Aucun résultat pour " & Me.MotCle
  End If
End Sub

Banzaï,

En effet il vaut mieux en rire je me suis entièrement trompé sur le noms des UF. Je mets ça sur le dos de inattentivité. J'étais sur deux choses à fois. La procédure je la connais heureusement, il vaut pour moi car mon équipe ne comprendra rien non plus.

En tout les cas merci encore pour toute l'aide apportée.

Je vais pouvoir clôturer le sujet .

J'espère ne pas avoir abusé de ton temps.

Cordialement

Samy

Bonsoir

Avant de clôturer

Que se passe t'il si suite à une recherche infructueuse (exemple avec "quelque chose du type sdedezz") la listbox va être vide

Et comment faut il faire pour remplir de nouveau la ListBox

Une solution consiste à effacer la zone recherche

La programmation est faite dans le fichier joint

Bonjour Banzaï,

Merci d'avoir soulever un problème dont je n'avais pas pensé. J'ai testé ton fichier avec la solution que tu proposes, je n'ai constatée aucune différence avec le précédent fichier.

J'ai repéré le bout de code rajouté :

Dim I As Long

Me.ListBox1.Clear

If Me.MotCle = "" Then

For I = 2 To f.[A65000].End(xlUp).Row

Me.ListBox1.AddItem

Me.ListBox1.List(I - 2, 0) = f.Cells(I, 4)

Me.ListBox1.List(I - 2, 1) = I

Next

Else

Je dois mal comprendre la façon de procéder, à l'ouverture je choisis CONSULTATION j'inscris sehqmdh et la un msg me disant aucun résultat pour elqkhkl. La listbox se vide. En remettant un critère correcte il trouve ce qu'on lui demande.

Peux tu me renseigner davantage.

Bonjour

belsamis010975 a écrit :

En remettant un critère correcte il trouve ce qu'on lui demande

Exact

Mais expliques comment fais tu pour avoir toute la liste ?

Moi j'avais pensé à cette solution : Effacer la TextBox de recherche

Si ce n'est pas important ne l'utilises pas

Bonjour Banzaï,

Désolé de cette absence je n’étais pas dispo ces derniers temps.

Pour répondre à ta question pour afficher de nouveau tous les clients il faut cliquer sur le bouton « tout » sur le userform consultation.

Par contre on ma soumit un souhait, un de mes collaborateur m’a demandé s’il été possible de mettre du jaune automatiquement sans passer par le userform de la colonne Z à BD soit la 26éme à la 56éme colonne.

Voici le code qui le fait automatiquement soit par le userform ou directement sur le fichier de la 4ème à la 20éme colonne. Ca fonctionne nickel

Mais quand je duplique le code en y mettant les bonnes données ça fonctionne bien sur le fichier mais en passant par userform ça met en jaune la ligne de la colonne 26 à 56.

Ce code est sur la feuille FICHIER DE BASE

Private Sub Worksheet_Change(ByVal Target As Range)

Dim Plage As Range

Set Plage = Range(Cells(Target.Row, 4), Cells(Target.Row, 20))

Set Plage = Range(Cells(Target.Row, 26), Cells(Target.Row, 56)) (VOICI LA LIGNE QUE J'AI RAJOUTE ONGLET FICHIER CLIENT)

If Target.Count = 1 And Not Application.Intersect(Target, Plage) Is Nothing Then

Target.Interior.Color = vbYellow

End If

Set Plage = Nothing

End Sub

Merci Banzaï

Bonjour

Pas sur d'avoir tout compris

Modifies le code du module de la feuille "FICHIER DE BASE"

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Plage As Range

  Set Plage = Range(Cells(Target.Row, 26), Cells(Target.Row, 56))
  If Target.Count = 1 And Not Application.Intersect(Target, Plage) Is Nothing Then
    Plage.Interior.Color = vbYellow
  End If
End Sub
Rechercher des sujets similaires à "format numerique useform"