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

Bonsoir Martial, bonsoir à tous,

Je te remercie pour ton dernier post mais je ne comprends pas le classeur indique des erreures aléatoires ??? un reboot et plus rien ?

J'ai de façon récurente un problème d'initialisation de la liste 'Lots' de la feuille 9 SUIVI SITUATION.

Merci de ton aide.
 

Pièces jointes

  • Base.xlsm
    93.3 KB · Affichages: 59
  • SITUATIONS.xlsx
    18.3 KB · Affichages: 51
  • Base.xlsm
    93.3 KB · Affichages: 67
  • SITUATIONS.xlsx
    18.3 KB · Affichages: 55
  • Base.xlsm
    93.3 KB · Affichages: 61
  • SITUATIONS.xlsx
    18.3 KB · Affichages: 49
Dernière édition:

Yaloo

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

Salut Steve,

Moi aussi j'ai eu des problèmes d'erreurs, ça vient de la fonction Ouvert, mais je viens de vérifier avec le fichier de ton post précédent et ça fonctionne correctement. Donc je ne sais plus quoi penser.
Si ça continue, on changera cette partie là de la procédure.

Pour ton calcul de pourcentage, en soit ce n'est pas très complexe, il suffit de mettre
VB:
' Copie du % dans la case Avenant correspondante
 
 Feuil8.Cells(Lots.ListIndex + 8, 3) = Pourcentage.Value / 100
 Feuil8.Cells(Lots.ListIndex + 8, 3).NumberFormat = "0%"


' renseignement du montant de la situation
  
 MontantHT = Feuil8.Cells(Lots.ListIndex + 8, 4)
 
 d = Feuil8.Cells(Lots.ListIndex + 8, 6).End(xlToLeft).Column + 1
  If d < 5 Then d = 5
 Feuil8.Cells(Lots.ListIndex + 8, d).Formula = MontantHT * Pourcentage / 100

Et surtout, enlever

VB:
Private Sub Pourcentage_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Pourcentage.Value = Format(Pourcentage.Value / 100, "0%")
End Sub

Ca fait le bon calcul, par contre, le problème vient du fait qu'il faut ajouter le % aux % précédents lorsqu'il ne s'agit pas du premier avenant.

Je suis trop crevé pour le faire ce soir, on verra demain.

A+

Martial

PS : Pour éviter que ça plante, tu supprimes la ligne
If Not Ouvert("SITUATIONS.xlsx") Then et le End If qui va avec.
 

SSteve

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

Bonsoir Martial, bonsoir à tous,

c'est une fois de plus génial !!! cela a effectivement résolu plusieurs soucis...

Etape complémentaire : je souhaite, quand on rempli le formulaire 'renseignement' que ca me remplisse un tableau 'CR de Chantier' (en annexe).

A chaque fois qu'un lot est renseigné, l'ensemble des données (Lot, nom, prénom, adresse, @) se retrouvent à la suite d'une case à l'autre (Lignes 44 à 50).

Cela implique que l'on complète le formulaire avec une demande de renseignement du mail...

Est-il possible aussi de renseigner (créer au premier lot) une liste de diffusion que l'on appelerait du nom du chantier, classeur 'Base' - feuille 'LOTS' - cellule 'B30'

merci de ton aide !

Je suis presque au bout...
 
Dernière édition:

Yaloo

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

Bonsoir Steve,

Pour en revenir à la fin de mon message post #63, tu as pu modifier et ajouter le pourcentage d'avancement si un pourcentage avait déjà été enregistré ?

Pour le mail, tu peux utiliser InputBox, recherche de l'aide dans VBA pour plus d'information.

Pour ton post précédent, pour le renseignement des nom et adresse, il suffit de faire une boucle, du style (pas testé mais ça devrait le faire) :
VB:
Sub Adresse()
Dim i& 'Colonne pour la 1ere feuille = Ligne pour la 2ème feuille
Dim Mail$
For i = 1 To 5 'En fonction du nb de cellule à traiter
  'Admettons que l'on veuille copier les données de la ligne 8 de la feuille 1
  'Dans la colonne 5 de la feuille 2
  Feuil2.Cells(i, 5) = Feuil1.Cells(8, i)
Next i
Mail = InputBox("Merci de renseigner une adresse mail", "Adresse mail")
Feuil2.Cells(6, 5) = Mail
End Sub

Rien ne t'empêche de mettre une variable à la place de la ligne 8, cela peut être la dernière ligne.

Pour le dernier point (toujours pas testé mais ça devrait toujours le faire) :
VB:
Dim NomFichier$
NomFichier = ThisWorkbook.Path & ThisWorkbook.Name & " " & ActiveSheet.Name & " " & [B30]
ActiveWorkbook.SaveAs NomFichier

A te relire

Martial
 

SSteve

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

Merci Martial !
En fait, je ne renseigne pas un pourcentage 'tronçonné' de facturation (cette fois ci on facture 30%, cette fois là on ne fai tque 15 %). Le pourcentage représente un % d'avancement de chantier ce qui permet de remplacer l'ancien % directement...

Je me demande si je n'ai pas loupé quelquechose ???

non, je ne pense pas ...?? ! ?:confused:
 

Yaloo

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

Re,

Pour moi, le 1er avancement 15%, ensuite le deuxième 15% ce qui fait 30% donc 30% d'avancement, puis 3 ème 20% total 50 %, on est donc à la moitié des paiements.

Mais chacun à ses habitudes et façons de faire.

A+

Martial
 

SSteve

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

Je ne saisi pas le fonctionnement de ce code ?


VB:
Sub Adresse()
Dim i& 'Colonne pour la 1ere feuille = Ligne pour la 2ème feuille
Dim Mail$
For i = 1 To 5 'En fonction du nb de cellule à traiter
  'Admettons que l'on veuille copier les données de la ligne 8 de la feuille 1
  'Dans la colonne 5 de la feuille 2
  Feuil2.Cells(i, 5) = Feuil1.Cells(8, i)
Next i
Mail = InputBox("Merci de renseigner une adresse mail", "Adresse mail")
Feuil2.Cells(6, 5) = Mail
End Sub
l
 

SSteve

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

En fait, non.
L'avancement se déroule par rapport à une échelle temps qui est définie par le planning du début de chantier.
Ce qui permet d'informer le client de l'état d'avancement de son chantier.:)
 

Yaloo

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

Re,

Autant pour moi, je n'avais pas remarqué que les données dans les colonnes ne se suivaient pas.

Je ne saisi pas le fonctionnement de ce code ?

Voici un fichier, pour simplifier j'ai tout mis dans le même fichier.

Il suffit d'adapter avec le nom des classeurs.

La macro se trouve dans le module1

Tant que l'on a pas mis une adresse mail correcte, on ne peut pas passer à la copie des données.

A+

Martial

Edit : Modif fichier car données confidentielles.
 

Pièces jointes

  • Base V5.1.xlsm
    106.1 KB · Affichages: 51
Dernière édition:

SSteve

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

Bonsoir Martial, bonsoir à tous,

Voici en annexe le fichier avec une tentative de code.

J'ai intégré dans le formulaire 'Renseignement' la demande de mail.

En fait, ce que je cherche à faire ,c'est copier les cellule A45:I50 et de les inserer dans la cellule A51 à chaque UserForm 'Renseignement' validé.

Ensuite, on copie le 'Lot' en A52, le nom de l'entreprise en B51, le nom de l'entrepreneur en B52, etc.. et ainsi de suite à chaque formulaire.

et je bloque...

Ensuite je collecte à chaque validation, le mail de l'entreprise que j'ajoute à une liste d'envoi intitulée du nom du chantier...

Merci de ton aide :rolleyes:
 
Dernière édition:

Yaloo

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

Bonsoir Steve,

C'est un peu confus :confused:

J'ai intégré dans le formulaire 'Renseignement' la demande de mail.
Ok ça j'ai vu

En fait, ce que je cherche à faire ,c'est copier les cellule A45:I50 et de les inserer dans la cellule A51 à chaque UserForm 'Renseignement' validé.
Tu veux mettre 45 cellules dans une seule ? Il s'agit de FL1.Cells(i, 1).Value = R ?

Ensuite, on copie le 'Lot' en A52, le nom de l'entreprise en B51, le nom de l'entrepreneur en B52, etc.. et ainsi de suite à chaque formulaire.
Désolé, je suis largué...je ne comprends dans quelle feuille tu te trouves et que viennent faire les A52 B51 car même dans ta feuille CR, les lignes 51 et 52 ne sont pas renseignées.

et je bloque...
Sur quoi ? précisément ? :confused:

Ensuite je collecte à chaque validation, le mail de l'entreprise que j'ajoute à une liste d'envoi intitulée du nom du chantier...
Je n'ai rien trouvé dans la macro qui ressemble à ça....:(

Pourrais-tu être plus clair ? Ce n'est pas évident de ne communiquer que par clavier interposé. D'autant que toi, tu sais ce que tu veux faire, les XLnautes pas du tout.

Pour éviter toutes polémiques, je ne dit pas ça méchamment mais amicalement, afin de pouvoir te venir en aide.

A te relire

Martial
 

SSteve

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

LOL... je suis si peu compréhensif... désolé...

Je te joins le classeur BASE modifié quelque peu...

J'ai changé un peu d'approche et tu pourras (peut être) comprendre... :

Lorsque le classeur s'ouvre, je choisis l'option 'remplir une fiche'. Je renseigne la fiche complète qui va enregistrer les infos dans la feuille 'définition' du meme classeur.
Ensuite, le code ouvre le classeur 'OS' pour créer une feuille au nom du 'Lots' et un numéro incrémenté.

Par la suite, je voudrais que le code ouvre le classeur 'CR', remplisse le premier 'cadre' préformaté vide dans la feuille 1. Pour la simplicité du code j'ai mis la feuille 1 dans le classeur 'BASE et l'ai appelé 'CR'.

Et à chaque fois que je rempli un nouveau formulaire, le code me remplit le cadre suivant.

Enfin, je voudrais créer une liste de diffusion OUTLOOK constitué de l'ensemble des adresses mails rentrés dans le code.
J'espère avaoir pu être un peu plus clair... ??
 

Pièces jointes

  • Base.xlsm
    118.2 KB · Affichages: 42
  • Base.xlsm
    118.2 KB · Affichages: 44
  • Base.xlsm
    118.2 KB · Affichages: 44

Yaloo

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

Re,

Perso, je n'ai pas vu de données confidentielles. Il y a bien M. DUPONT mais est-ce confidentielle :confused: Dis-moi dans quel fichier et je m'empresse de les supprimer.

Bon, c'est plus clair, mais je verrai ça demain.

A+
 
Haut Bas