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 à tout, bonsoir Martial,

J'ai fait une tentative de code :
'Création de liste de diffusion
Dim OutlookApp As New Outlook.Application
Dim Liste As Outlook.DistListItem
Dim Desti As Outlook.Recipient

Set Liste = OutlookApp.CreateItem(olDistributionListItem)

Liste.DLName = "Liste de diffusion"
If Not Liste Is Nothing Then
Set Desti = OutlookApp.Session.CreateRecipient(Email.Value)
Desti.Resolve
Liste.AddMember Desti
Else: Liste.AddMember Desti
End If

Mais bien entendu, ça ne marche pas... :(
 

Yaloo

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

Bonsoir Steve,

Je ne connais pas la principe de la liste de diffusion (enfin pas dans VBA), mais tu n'as pas besoin de ça pour envoyer des mails aux personnes concernées.

Que veux-tu envoyer comme documents ? A qui ?

A+

Martial
 

SSteve

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

Chaque semaine qui passe donne lieu à une réunion de chantier.
Chaque réunion donne lieu à un compte rendu qu'il faut diffuser à l'ensemble des entreprises (des lots) + d'autres personnes.

L'idée était d'automatiser la création de la liste qui servirai à l'envoi : coller dans une liste l'ensemble des mails collectés lors du remplissage de l'UserForm 'Renseignements'...
 

Yaloo

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

Oui mais, cela voudrait dire que tu as une liste par chantier ?

On pourrait peut-être se servir de la feuille CR pour envoyer ce mail, car il s'agit bien d'envoyer le document compte-rendu "CR" ?

A+
 

SSteve

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

Oui, effectivement : 1 chantier = 1 liste

En fait, le CR est transformé en PDF pour qu'il ne soit pas modifiable et donc le classeur XLS sert de support.
 

Yaloo

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

Ok, dans ce cas-là il n'est peut-être pas nécessaire d'avoir une liste de diffusion.

Une liste de ce type devrait le faire : yyyy@sfr.fr;xxx@orange.fr;zzzz@free.fr;tttt@gmail.com etc....

Il faut mettre cette liste dans une cellule, ajouter les nouvelles adresses à chaque fois que tu rajoutes un lot.

En admettant que tu mettes tes adresses en F1, dans ta macro, tu mets FL2.[F1] = FL2.[F1] & ";" & Email

Il faut vérifier la syntaxe pour l'envoi des adresses dans OutLook.

A+
 

SSteve

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

Martial, je n'ai pas compris le code mais en fait lors du démarrage la toute première fois du UserForm 'Renseignements' tu créer normalement la liste au nom du chantier
Mais les autres fois, il ne faut que la compléter ?

Cela revient à vérier si la liste existe déjà sinon tu ajoutes l'adresse mail de l'entreprise à la liste.

Il faut toutefois vérifier que l'entreprise n'a pasdajà un lot sinon cela reviendrait à lui adresser 2 fois la liste... ce qui ne serait pas un drame.
 

Yaloo

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

Re,

Pour finir, j'ai mis la liste en J1, à changer si besoin. Je t'ai mentionné les lignes que j'ai rajouté.
VB:
Dim FL2 As Worksheet

        Set FL2 = Worksheets(1)
        j = FL2.Range("B65536").End(xlUp).Row + 1
        k = j + 1  'Pour le LOTS
Dim Plage As Range
''''''Ajout de la ligne ci-dessous
Dim NewMail As Boolean
''''''Ajout de la ligne ci-dessous
NewMail = True
''''''Ajout de la ligne ci-dessous
If Left(FL2.[J1], 1) = ";" Then FL2.[J1] = Right(FL2.[J1], Len(FL2.[J1]) - 1)
Set Plage = FL2.Range("B45:B" & j)
        'Recherche l'entreprise dans la plage (colonne B de 45 à la fin des données)
        'Si trouvée alors on redéfinit j et k
        If Not IsError(Application.Match(NomEts, Plage, 0)) Then
          'j étant la ligne trouvée   (le + 44 ajoute à la ligne trouvée dans la plage)
          j = 44 + Application.Match(NomEts, Plage, 0)
          'k étant le N° de ligne du lot à partir de la ligne j
          'Exemple si j est 45 et que tu es au 2ème lot cela va donner 47
          k = Cells(j, 1).End(xlDown)(2).Row 'le (2) signifie ligne suivante ou ligne vide
''''''Ajout de la ligne ci-dessous
          NewMail = False
        End If
            'ATTENTION modification de la ligne du Lot avec k et non j
            FL2.Cells(k, 1).Value = Lots                                          'Lots
            FL2.Cells(j, 2).Value = NomEts                                            'Nom entreprise
            FL2.Cells(j + 2, 2).Value = RueEts                                        'Adresse
            FL2.Cells(j + 3, 2).Value = CompRueEts & " " & CompRueEts1                'Complément 1 & 2
            FL2.Cells(j + 4, 2).Value = Val(CP) & " " & Ville                         'CP + Ville
            FL2.Cells(j + 5, 2).Value = Email.Value                                   'Mail
            FL2.Cells(j + 5, 4).Value = "M." & NomDirigeant & " " & PrenomDirigeant   'Nom Représentant
''''''Ajout de la ligne ci-dessous
            If NewMail Then FL2.[J1] = FL2.[J1] & ";" & Email
                       
            WkCR.Save: WkCR.Close

Pour l'envoi il suffit de prendre la cellule J1 de CR.

A+

Martial

PS : si tu pouvais mettre un nouveau fichier avec les modifications que tu as fait, car à la longue je ne sais plus avec quel code tu travailles.
 

SSteve

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

Bonsoir Martial, bonsoir à tous,

Je te propose de mettre en ligne le fichier une fois la gestion du mail terminée, sauf si tu en as besoin rapide ?

J'ai un message d'erreur sur ton dernier code notamment au niveau de l'enregistrement du classeur 'CR' et je me demandais si ce n'était pas parce que on ne l'ouvrais pas au début ?

En fait il blouqe à l'enregistrement mais rien n'est inscrit dedans ...
 

SSteve

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

Martial,

Tu trouveras en annexe le projet mis à jour étant donnée que je pense qu'il est mature pour être épourvé !

Merci encore de cet accompagnement et de ton soutient !

:cool: ;)
 

Pièces jointes

  • Base.xlsm
    103.3 KB · Affichages: 101
  • Base.xlsm
    103.3 KB · Affichages: 103
  • Base.xlsm
    103.3 KB · Affichages: 100

Yaloo

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

Re,

Ca, c'était ton premier post, il y a 15 jours. :rolleyes:
Je suis plus que novice en VBA et j'essaie de concevoir un petit programme par l'intermédiaire, entre autre, d'un UserForm.

Et celui-ci, c'était il y a quelques minutes :eek:
Martial,

Tu trouveras en annexe le projet mis à jour étant donnée que je pense qu'il est mature pour être épourvé !

Merci encore de cet accompagnement et de ton soutient !

:cool: ;)

Ca fait plaisir de voir, une centaine de post plus tard, ton fichier abouti.

Au plaisir de te revoir sur le forum :cool:.

Martial
 

Discussions similaires

Statistiques des forums

Discussions
311 711
Messages
2 081 794
Membres
101 817
dernier inscrit
carvajal