Renvoyer dans une cellule la valuer d'une TextBox en fonction d'une ComboBox

SSteve

XLDnaute Junior
Bonjour à tous

Je suis plus que novice en VBA et j'essaie de concevoir un petit programme par l'intermédiaire, entre autre, d'un UserForm.
J'y ai inséré une ComboxBox qui va récuperer des noms dans la colonne A.
J'ai ensuite une TextBox qui demande de renseigner un montant attribué à ce nom.
Le but est d'en renvoyer le montant inscrit dans la TextBox dans la ligne de réference de la Combobox.
Comme on peux reproduire plusieur fois la manip, il faudrait que ce renvoie se situe dans la première cellule de la fin de la ligne.
J'y ai passé quelques heures...
Merci de votre aide précieuse.
Steve
Je suis sous Excel 2010

Voici le code :

' Lots est une liste générée par un autre UserForm qui rempli la colonne A

Public MontantHT_Value As String

Private Sub Valider_Click()
If Lots = "" Then
MsgBox "Merci de renseigner le lot"
Lots.SetFocus
Exit Sub
End If

If MontantHT = "" Then
MsgBox "Merci de renseigner le montant HT de l'avenant"
MontantHT.SetFocus
Exit Sub
End If

If Not IsNumeric(MontantHT) Then
MsgBox "Merci de renseigner des chiffres !"
MontantHT = ""
MontantHT.SetFocus
Exit Sub
End If

' Copie du Montant dans la case Avenant correspondante
Dim POs As Range, Ccell As Range, CheckCell As Range, TextBox As Range

Set POs = Worksheets("Definition").Range("A2:A30")
Set TextBox = TextBox"Lots"
Set CheckCell = TextBox.Value


For Each Ccell In POs
If CheckCell.Value = Ccell.Value Then
ActiveSheet.Paste (MontantHT.Value)
Else
'
End If
Next

' Vidage des TextBox/ComboBox
Lots = ""
MontantHT = ""

End Sub
Private Sub Annuler_Click()
Unload AVENANT
Accueil.Show
End Sub
Private Sub MontantHT_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 46 Then KeyAscii = 44
End Sub
 

SSteve

XLDnaute Junior
Re : Renvoyer dans une cellule la valuer d'une TextBox en fonction d'une ComboBox

En fait, tant que je n'ai pas enregistré une première fois après avoir lancé le code, il me met ce message.
Une fois enregistré, j'ai l'info m'indiquant que la feuille existe déjà
 

Yaloo

XLDnaute Barbatruc
Re : Renvoyer dans une cellule la valuer d'une TextBox en fonction d'une ComboBox

Re,

Sinon une autre solution, tester si le fichier est ouvert avant la demande d'ouverture, s'il est déjà ouvert on va à la fin de la macro.

Voir fichier ci-dessous.

Martial
 

Pièces jointes

  • Base.xlsm
    52.1 KB · Affichages: 135
  • Base.xlsm
    52.1 KB · Affichages: 133
  • Base.xlsm
    52.1 KB · Affichages: 140

SSteve

XLDnaute Junior
Re : Renvoyer dans une cellule la valuer d'une TextBox en fonction d'une ComboBox

Super ! Je retiens effectivement la 2e version !

Merci infiniment !

Si je peux encore abuser de ton temps et de ta gentillesse

J'essaie maintenant de coller dans les cellules de la nouvelle feuille créé, les renseignements du classeur BASE et je bute sur la distinction entre le classeur 'BASE' et ses 2 fiches et le classeur de destination contenant les nouvelles feuilles

Le fichier en annexe.

Merci encore !
 

Pièces jointes

  • Base.xlsm
    53.4 KB · Affichages: 134
  • Base.xlsm
    53.4 KB · Affichages: 135
  • Base.xlsm
    53.4 KB · Affichages: 127

Yaloo

XLDnaute Barbatruc
Re : Renvoyer dans une cellule la valuer d'une TextBox en fonction d'une ComboBox

Bonjour Steve, bonjour à tous,

Voici ton fichier modifié, je trouve que l'écriture avec [ ] est plus facile à visualiser, lorsque c'est possible.

Avec With et End With, cela te permet d'éviter de répéter toujours la même chose, ce qui simplifie également la lecture.

En espérant avoir répondu à ta demande.

A te relire

Martial

PS : tu dois avoir des cellules de réception erronées, à vérifier
 

Pièces jointes

  • Base V1.xlsm
    54.3 KB · Affichages: 62

SSteve

XLDnaute Junior
Re : Renvoyer dans une cellule la valuer d'une TextBox en fonction d'une ComboBox

Bonsoir Martial, bonsoir à tous,

Merci encore une fois pour ton aide ! C'est génial !!!
La nuit portant conseil, j'ai réalisé qu'en fait il était plus simple de créer/copier cette nouvelle feuille dans OS.xlsx directement lorsque je renseigne la UserForm de la feuille Definition du classeur Base.

Du coup j'ai repris ton code et l'ai collé dans la UserForm mais suis confronté à un soucis d'activation de feuille/classeur.

Lorsque je fini la création de la nouvelle feuille dans OS, le classeur OS reste active et du coup mon UserForm ne fonctionne plus, faisant reference à BASE.xlsx.

J'ai un autre petit soucis de formatage de date dans le UserForm : je n'arrive pas à transferer un format reconnu et du coup la date affichée en destination devient aléatoire

Merci de ton aide !

Steve
 

Pièces jointes

  • Base.xlsm
    49.5 KB · Affichages: 61
  • Base.xlsm
    49.5 KB · Affichages: 63
  • Base.xlsm
    49.5 KB · Affichages: 58

Yaloo

XLDnaute Barbatruc
Re : Renvoyer dans une cellule la valuer d'une TextBox en fonction d'une ComboBox

Salut Steve,

A la fin de la macro, il faut mettre

VB:
        WkO.Save: WkO.Close
    End If
    Unload Me
End Sub


Je n'ai pas vu ton problème de date, peux-tu m'expliquer ?

A+

Martial
 

SSteve

XLDnaute Junior
Re : Renvoyer dans une cellule la valuer d'une TextBox en fonction d'une ComboBox

Merci Martial !

C'est génial ! cela simplifie l'utilisation du code !

Pour la date, j'avai renseigné un code afin de déterminer le format attendu type '##/##/###)

Il me copiait la date renseignée dans le UserForm mais pour la date d'hier entrée au format 120313 il me donnait une date en 2024 ou quelquechose du genre (je ne m'en souviens pas...)

VBA m'a indiqué je ne sais pour quelle raison, ce matin, une erreur sur cette demande de formatage donc j'ai enlevé la ligne.

Actuellement il copie exactement ce que je rentre.

J'aimerais pouvoir rentrer par exemple 130313 et qu'il inscrive 13/03/2013

Merci de ton aide précieuse !
 

Yaloo

XLDnaute Barbatruc
Re : Renvoyer dans une cellule la valuer d'une TextBox en fonction d'une ComboBox

Salut Steve,

Tu peux aussi mettre ceci pour ton textbox, il suffit de rentrer sans les / comme tu le fais actuellement, ça mets les / tout seul .

VB:
Private Sub TextBox1_Change()
'Force le contenu en format date
Dim Valeur As Byte
TextBox1.MaxLength = 10 'nb caractères maxi autorisé dans le textbox
Valeur = Len(TextBox1)
    If Valeur = 2 Or Valeur = 5 Then
        TextBox1 = TextBox1 & "/"
    End If
End Sub

A+

Martial
 

SSteve

XLDnaute Junior
Re : Renvoyer dans une cellule la valuer d'une TextBox en fonction d'une ComboBox

Martial, merci !

J'aurais besoin d'un autre coup de main :

J'ai adapté la copie/creation des données du UserForm OS.xlsx pour Avenant.xlsx. Je me retrouve avec un code erreur 1004 sans rien comprendre à son origine...
 

Yaloo

XLDnaute Barbatruc
Re : Renvoyer dans une cellule la valuer d'une TextBox en fonction d'une ComboBox

Re,

Oui, je veux bien, mais il faudrait un peu plus de renseignements.

De tête, l'erreur 1004 doit être une erreur concernant les cellules. (mais ça c'est de tête, donc ...) Sans voir ta macro et même ton fichier c'est compliqué.

A+
 

Yaloo

XLDnaute Barbatruc
Re : Renvoyer dans une cellule la valuer d'une TextBox en fonction d'une ComboBox

Re,

J'ai mis quelques annotations dans tes macros, car il y a certaines lignes dont tu peux te passer.

Moins il y a de lignes dans une macro, plus c'est lisible, plus c'est rapide.

A+

PS : Je n'ai pas trouvé l'erreur 1004, avec le fichier cela devrait le faire.
 

Pièces jointes

  • Base (3).xlsm
    59.9 KB · Affichages: 42
  • Base (3).xlsm
    59.9 KB · Affichages: 44
  • Base (3).xlsm
    59.9 KB · Affichages: 40

Discussions similaires