Je suis actuellement en train de créer un outil de suivi client via VBA.
Mon problème : en appuyant le bouton valider de mon userform "UResultatPCConquete", je fais prendre la valeur de la combobox de ce userform (UResultatPCConquete_ComboBoxNDC) à la cellule H1 ( de la feuille "AJOUT_CONQUETE"), le code :
Code:
URsltTelConquete.Show
Unload Me
'UResultatPCConquete.Hide
.Range("H1") = Me.UResultatPCConquete_ComboBoxNDC
jusque là ca marche!
Mais en appuyant sur le bouton "valider" de ce userform j'en appelle un autre dont le nom est "URsltTelConquete" dans lequel j'aimerais copié la valeur de la cellule H1 de la feuille "AJOUT_CONQUETE" dans la textbox "URsltTelConquete_TextBoxNDC" et là ca ne marche pas... voici le code du deuxième userform :
Code:
Private Sub UserForm_Initialize()
Me.URsltTelConquete_Titre.Font.Size = 14
Me.URsltTelConquete_Titre.TextAlign = fmTextAlignCenter
Me.URsltTelConquete_TextBoxNDC.Value = ThisWorkbook.Sheets(AJOUT_CONQUETE).Range("H1").Value
End Sub
Au passage j'avais essayé de créer une variable Public NDC as String pour faire cette opération mais devant mon échec je me suis rabattu sur la solution de passer par l'intermédiaire d'une cellule.
Voilà merci d'avance aux personnes qui pourront m'aider!
Re : VBA, n'arrive pas à attribuer la valeur d'une variable public à un textbox dans
merci Papou-net c'est parfait!
je sais pas trop s'il faut que je refasse une nouvelle discussion pour ça donc je continue ici parce que c'est en lien!
Donc grâce à toi j'arrive à faire apparaître le NDC dans le userform, mais j'aimerais aussi faire apparaître le NOm et le Prénom. Pour cela j'ai récupéré le numero de la ligne où se trouve le NDC trouvé par le find que j'ai stocké dans une variable "Ligne" que j'utilise pour récupérer les valeurs de Range("D" & Ligne) et de Range("E" & Ligne):
Code:
Private Sub UResultatPCConquete_Valider_Click()
Dim Ligne As Integer
(code)
With Sheets("AJOUT_CONQUETE").Range("C:C")
Dim b As Range
Set b = .Find(NDCConquete, LookIn:=xlValues)
'=> b IS Nohting veut dire pas de resultat
'=>Not b Is Nothing veut dire au moçins un resultat
If Not b Is Nothing Then
URsltTelConquete.Show
Unload Me
b.Select
Ligne = ActiveCell.Row
NomConquete = Range("D" & Ligne).Value
PrenomConquete = Range("E" & Ligne).Value
Else
MsgBox "Ce client n'est pas la base de donnée Client (Conquête inactive) à contacter"
(code)
Je réutilise ces valeurs dans le deuxieme userform "URsltTelConquete" que j'assigne aux Textbox respectives, voici le code :
Code:
Private Sub UserForm_Initialize()
Me.URsltTelConquete_Titre.Font.Size = 14
Me.URsltTelConquete_Titre.TextAlign = fmTextAlignCenter
Me.URsltTelConquete_TextBoxNDC.Value = NDCConquete
Me.URsltTelConquete_TextBoxNom.Value = NomConquete
Me.URsltTelConquete_TextBoxPrenom.Value = PrenomConquete
End Sub
et ça marche! à un petit problème près : il ya un temps d'actualisation entre le NDC et le NOM et prénom!
je m'explique: j'arrive à faire apparaitre NDC1 NOM1 et prénom1, j'esaye de changer le NDC en choisissant le NDC2 et le userform "URsltTelConquete" me fait appraitre NDC2 (ca c'est bon) mais NOM1 et Prenom1 =/
je dois reclicker sur le bouton "Conquêtes inactives - Résultat prise de contact" et selectionner NDC2 une nouvelle fois pour que le deuxieme userform m'affiche bien NDC2 NOM2 Prenom2!
D'où peut venir ce décalage? je suppose que ca vient des variables et quand elles prennent leurs valeurs, mais comment corriger cela?
Re : VBA, n'arrive pas à attribuer la valeur d'une variable public à un textbox dans
RE Bobbo,
C'est normal car tu actives le deuxième UserForm avant de mettre à jour les noms et prénoms.
J'ai modifié le code comme ceci, et ça marche :
Code:
Private Sub UResultatPCConquete_Valider_Click()
Dim Ligne As Integer
(code)
With Sheets("AJOUT_CONQUETE").Range("C:C")
Dim b As Range
Set b = .Find(NDCConquete, LookIn:=xlValues)
'=> b IS Nohting veut dire pas de resultat
'=>Not b Is Nothing veut dire au moçins un resultat
If Not b Is Nothing Then
Unload Me
b.Select
Ligne = ActiveCell.Row
NomConquete = Range("D" & Ligne).Value
PrenomConquete = Range("E" & Ligne).Value
URsltTelConquete.Show
Else
MsgBox "Ce client n'est pas la base de donnée Client (Conquête inactive) à contacter"
(code)
Tu peux aisément le vérifier sur la copie ci-jointe.