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
 

Yaloo

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

Bonsoir SSteve et bienvenu sur XLD,

Je suis plus que novice en VBA
C'est possible :confused: :confused: :confused:



Set TextBox = TextBox"Lots"
Set CheckCell = TextBox.Value
Ca, c'est bizarre :eek:

VB:
  For Each Ccell In POs
    If CheckCell.Value = Ccell.Value Then
      ActiveSheet.Paste (MontantHT.Value)
    Else
      '
    End If
  Next
Plutôt :
VB:
  For Each Ccell In POs
    If CheckCell.Value = Ccell.Value Then
     Ccell.Value = MontantHT
    Else
      '
    End If
  Next
Mais sans fichier c'est un peu compliqué, car tu parles de combobox alors que dans la macro ça serait plutôt des checkbox, non ....

A te relire

Martial
 

SSteve

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

Martial bonsoir et merci pour ta réponse
Voici mon fichier joint : il y a très surement des erreurs l'ensemble du fichier.
 

Yaloo

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

Re,

T'as oublié le fichier.
 

SSteve

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

avec la piece jointe, c'est mieux !
 

Yaloo

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

Re,

Tes données en colonne A se sera des chiffres, des lettres ou les 2 ?
 

Yaloo

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

Re,

Peu importe la question de mon post#6

A la fin de ta macro tu mets

VB:
' Copie du Montant dans la case Avenant correspondante
  Cells(Lots.ListIndex + 2, 11) = MontantHT

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

End Sub
A te relire

Martial
 

SSteve

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

C'est SUPER !!! Merci pour ce code... le temps que j'ai passé juste pour pouvoir renvoyer dans la bonne cellule.

En fait la colonne A ne comporte que des lettres.
Il est possible que je sois amené a rajouter un avenant à n'importe quel lot. Ce qui implique qu'il faudrait aller chercher la première case vide à la fin de la ligne à chaque appel de procédure...
 

Yaloo

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

Salut Steve,

Essaies avec ça en fin de macro.

VB:
' Copie du Montant dans la case Avenant correspondante
  c = Cells(Lots.ListIndex + 2, 14).End(xlToLeft).Column + 1
  If c < 11 Then c = 11
  Cells(Lots.ListIndex + 2, c) = MontantHT

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

End Sub
A+

Martial
 

SSteve

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

C'est exactement ca !!! Merci beaucoup !!!
Ce que représente ce programme est en quelques sortes une base de données.
Je vais m'atteler maintenant à récuperer chaque ligne pour créer un document spécifique à chaque lot en word.

Merci encore !
Surement à bientôt :eek:
 

SSteve

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

Bonsoir à tous !

Je pensais que je me dépatouillerais plus facilement : je pète un cable... J'ai essayé pleins de combinaisons differentes en glanant des exemples sur multiples sites...

Si une ame charitable pouvait me donner la main...

J'ai un fichier 'Base', feuille 'Definition', dans laquelle je renseigne un nombre de postes travaux avec plusieurs colonnes renseignées
J'ai un autre classeur "OS" dans lequel j'ai une feuille matrice

Le but est de :
- créer une copie de la matrice dans son classeur intitulé par le nom du poste (colonne A du classeur "Base") seulement si la feuille n'existe pas (il ne peux y avoir qu'une seule feuille à ce nom)
- renseigner les cellules de cette copie par la ligne à l'origine de cette création
- faire cela pour l'ensemble des lignes
- Si la feuille existe, passer à la ligne suivante

Ci-joint les fichiers en question.

Merci d'avance.
 

Fichiers joints

Yaloo

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

Bonsoir Steve,

Voir le fichier ci-joint, quelques modifications dans ton code.

A+

Martial
 

Fichiers joints

SSteve

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

Bonsoir Martial et merci une nouvelle fois pour ton aide et ton retour.

Est-il possible de conditionner la création de ces fiches au fait qu'elle n'existe pas encore ?
 

Yaloo

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

Re,

Ce n'est pas ce que fait le fichier de mon post#12 ?

La feuille est créée si elle n'existe pas, si elle existe alors on passe à la suivante.

A+
 

SSteve

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

Lorsque je lance le code, il m'ouvre bien le classeur 'OS' et me créer les feuilles.

Si je relance le code alors que le classeur est ouvert, j'ai un MsgBox me demandant si je suis sur de vouloir ouvrir une nouvelle fois le classuer 'OS' et que sinon toutes les données seront effacées
Si je fais non à cette MsgBox, j'ai une erreur 1004
 

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

Il faut fermer le fichier en fin de code avec quelque chose du genre

WsO.Save : WsO.close
End Sub

A+

Edit : modif info, j'avais pas testé
 
Dernière édition:

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
 

Fichiers joints

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 !
 

Fichiers joints

SSteve

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

En fait je pense que j'aurai probablement aussi un problème sur la reconnaissance des cellules d'origine
 

Discussions similaires


Haut Bas