Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 supprimer une valeur textbox et remplacer la nouvelle valeur dans la même cellule

sylviecro

XLDnaute Nouveau
Bonjour forum

J'ai un userform (j'ai crée une version minus) où tout va bien, mais je voudrais que si la personne s'est trompé dans la listBox qu'elle puisse corriger en choisissant une autre valeur dans la liste et que cette valeur remplace celle dans la cellule correspondante.

j'arrive à supprimer la valeur textBox avec :
Private Sub TextBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal Y As Single)
TextBox1 = ""
Sheets("Feuil1").Range("A7").ClearContents
End Sub

mais j'ai 90 textbox alors y a t'il un code moins long que de copier tout ça 90 fois? et surtout que lorsqu'on choisi la nouvelle valeur, elle s'ajoute en dessous de ma liste dans la feuille f1.

Je joints mon Userform et le code

Merci à tous
 

Pièces jointes

  • Classeur1.xlsm
    23.5 KB · Affichages: 7

jmfmarques

XLDnaute Accro
Bonjour
alors y a t'il un code moins long que de copier tout ça 90 fois?
Un "code" ? pas à proprement parler, mais une manière autre de procéder : qui passe par l'apprentissage, la création et l'utilisation d'un module de classe.

Ceci étant : un nombre si élevé (90 !) de textboxes révèle très probablement une conception mal pensée et à remettre en cause.
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour @sylviecro ,@jmfmarques , le Forum,

Je regardais ton fichier, et donc si je comprends bien tu voudrais qu'à chaque click de choix dans une des ListBox ca alimente la TextBox en dessous... Soit !

Mais lisant ta demande ci-dessus, là ca devient délirant dans mon esprit, voilà ce que je comprends :



Module de Class ou pas, j'ai surtout l'impression, si j'ai compris, que tu dois aller te détendre et revoir complètement ce que tu veux faire... J'en ai vu des UserForms délirants, mais ce concept là va rentrer dans le Top 100... Et comme le dit justement jlfmarques "conception mal pensée"...

Ton besoin semble d'être de simplement remplir la Feuil1 sur Trois Champs, donc pourquoi ne pas le faire à chaque Click sur le CommandButton... la Feuil1 s'incrémentera avec le contenu de TROIS TextBox uniquement , et ainsi de suite... Si besoin tu pourras toujours avec un autre CommandButton/et une ListBox dédiée pour "Modifier" en rapellant une ligne de la Feuil1...

Enfin peutêtre je suis à côté de la plaque et c'est moi qui doit aller me détendre LoL

Bien @Toi, @Vous
@+Thierry
 

sylviecro

XLDnaute Nouveau
J'ai déjà 53 ans, jamais eu de cours informatique alors oui il se peut bien que je prenne un chemin plus long pour arriver à mes fins, car j'y vais au plus compréhensible pour moi étant en bas de novice en vba lol... En fait, je dois composer avec un UserForm des plus facile à utiliser pour sauver le plus de temps possible aux usagers.... En gros, je travaille pour une compagnie de sinistre et je voulais créer un fichier pour chaque client.. Donc j'ai utilisé un Userform avec des onglets. Je vais insérer mon vrai fichier et expliquer ce que je veux vraiment. Peut-être pourriez-vous m'aider avec la logique de la chose? Je vais enlever les données personnelles et je joindrez à mon message.
Merci
 

sylviecro

XLDnaute Nouveau
Et voilà... mon fichier original en construction. Il y a plusieurs feuilles au bas et se sont elles qui doivent être remplis à chaque client. Donc j'ai créé un Userform pour entrer les données qui vont se transférées sur les dites feuilles (pour ça pas de problème) j'ai déjà fait. Là où je veux attirer l'attention c'est dans l'Userform. Il y a 6 onglets. Chacun des ongles représentent une pièce qui a été touché par un dommage. Le technicien voulait au moins 5 choix par étage (d'ou l'onglet 1er étage, RDC et sous-sol) et il voulait voir le résultat de ce qu'il a choisi... c'est pour ça les textBox. Par contre s'il se trompe à la 4e pièce, je voudrais qu'il puisse corriger en choisissant une autre pièce et que cette pièce se corrige dans la feuille data, car c'est de cette feuilles que mes autres feuilles vont prendre la source à moins que j'envoie directement de mes textbox, mais là c'est trop pour moi. Voilà. J'espère que c'est plus clair.
 

Pièces jointes

  • fiche client nouveau.xlsm
    457.7 KB · Affichages: 3

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour @sylviecro , le Forum

Pas simple ton affaire !, J'ai un peu regardé et j'ai essayé de respecter un peu ton concept, tu verras ce que ca donne sur le 1èr étége uniquement... En image ça donne ceci :




Mais je ne suis pas satisfait, le fait que les ListBox soient en Multi-Select pose bien des soucis et complique l'algo, ca bugue même car le "deselect" est très mal vu par VBA sur l'action Change...
En fait une fois le résultat devant les yeux, à mon humble avis, ce n'est pas nécessaire que ces Listbox soient en Multi-Select, puisque le selection est stockée au fur et à mesure dans les TextBox...

Enfin tu découvriras pas mal d'astuces en tout cas, j'utilise le "Tag" des TextBox, tu devras aller voir dans les Propriétés de chacune d'elle :



Ce qui me permet de faire ce genre d'Algo :



P1 = MultiPage1 'pour le 1er étage
R1 = Rangée 1 'exemple rangée 1 = Pièces
Txb01 to Txb05 par Rangée...

Bonne découverte
@+Thierry
 

Pièces jointes

  • XLD_sylviecro_fiche_client_nouveau.xlsm
    458.1 KB · Affichages: 8

sylviecro

XLDnaute Nouveau
 

sylviecro

XLDnaute Nouveau

Pourrais-tu juste m'expliquer les 2 lignes : If left (CTRL.Tag,6) et If Right ... ?
Merci
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir @sylviecro , le forum

Un petit exemple, plus simple qu'un long discours :

VB:
Sub Test()
Dim MyString

MyString = "sylviecro"

MsgBox "Hello " & Left(MyString, 6) & vbCrLf & "tu as les " & Right(MyString, 3) & " ?"

If Right(MyString, 1) <> "s" Then
MsgBox "Oooops pardon, hello " & Left(MyString, 6) & vbCrLf & "tu as les " & Right(MyString, 3) & "s ?"
End If

End Sub

Bonne soirée (ou après midi au Canada
@+Thierry
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…