avyrex1926
Messages postés360Date d'inscriptiondimanche 3 décembre 2006StatutMembreDernière intervention 3 janvier 2012
-
20 mai 2007 à 12:22
avyrex1926
Messages postés360Date d'inscriptiondimanche 3 décembre 2006StatutMembreDernière intervention 3 janvier 2012
-
20 mai 2007 à 16:00
Boujour à tous,
Toujours en VBA sur mon projet,
Dans mon Userform, quans je fait une recherche avec la valeur du ComboBox1, il m'affiche l'information de la colone C à O.
<hr size="2" width="100%" />
Private Sub CommandButton1_Click()
If ComboBox1.Text = vbNullString Then
ComboBox1.SetFocus
MsgBox "SÉLECTIONNEZ VOTRE BON DE COMMANDE S.V.P."
Else
Application.ScreenUpdating = False
Dim Valeur As String
Sheets("Bon de commande").Select
Valeur = ComboBox1.Text
End If
Application.ScreenUpdating = True
End Sub
<hr size="2" width="100%" />
Maintenant, je voudrais inserrer des données dedans le fichier excel en entrant des données dans les textboxs 4 à 6, dans le ComboBox2 et aussi dans un DTPicker2 pour que les info se place automatiquement dans le fichier excel.
Voici le scrip qui me cause problème (en rouge le problème):
<hr size="2" width="100%" />
Private Sub CommandButton2_Click()
msg = "Voulez-vous continuer avec l'enregistrement?"
Style = vbYesNo + vbDefaultButton1
Réponse = MsgBox(msg, Style, Title)
If Réponse = vbYes Then
Range("B" & ComboBox1.ListIndex) = Range(("P") & TextBox4.Value)
Range("B" & ComboBox1.ListIndex) = Range(("P") &TextBox5.Value)
Range("B" & ComboBox1.ListIndex) = Range(("P") &TextBox6.Value)
Range("B" & ComboBox1.ListIndex) = Range(("P") &DTPicker1)
Range("B" & ComboBox1.ListIndex) = Range(("P") &ComboBox2.Value)
End If
Unload Me
End Sub
<hr size="2" width="100%" />Merci encore pour votre aide.
A voir également:
Insertion de donnée à partir d?un Userform dans un fichier excel
avyrex1926
Messages postés360Date d'inscriptiondimanche 3 décembre 2006StatutMembreDernière intervention 3 janvier 20123 20 mai 2007 à 14:16
Plus en détail car je crois que mon explication n'était pas à point,
Une fois la recherche fait dans le ComboBox1 ex: la valeur 00000,
Il recherche dans la feuille excel puis selon la valeur du comboBox, il me met dans le textBox1 à 3, la valeur qui suit la valeur du ComboBox1.
Maintenant, si j'entre dans le TextBox 4, TextBox5 et le TextBox6 des valeurs ainsi que Dans un DTpicker1 et le ComboBox2, en cliquant sur un Bouton, les données vont s'inscrire à la suite sur la bonne Ligne.
Et voilà le script ou je suis rendu.
<hr size= "2" width="100%" />
Private Sub CommandButton2_Click()
msg = "Voulez-vous continuer avec l'enregistrement?"
Style = vbYesNo + vbDefaultButton1
Réponse = MsgBox(msg, Style, Title)
If Réponse = vbYes Then
Range("B" & ComboBox1.ListIndex) = Range((" P ") & TextBox4.Value)
Range("B" & ComboBox1.ListIndex) = Range(("Q") &TextBox5.Value)
Range("B" & ComboBox1.ListIndex) = Range((" R ") &TextBox6.Value)
Range("B" & ComboBox1.ListIndex) = Range(("S") &DTPicker1)
Range("B" & ComboBox1.ListIndex) = Range(("T") &ComboBox2.Value)
End If
Unload Me
End Sub
Si TextBox4, 5 & 6 ont une valeur numérique, ça pourrait le faire, et encore que faut du bol.
Si c'est du texte, admettons le mot salut, beh ton code traduit :
Range("B" & ComboBox1.ListIndex) = Range("Psalut")
Ca n'existe pas.
Autre exemple flagrant :
Range("B" & ComboBox1.ListIndex) Range((" S ") &DTPicker1) Range("B" & ComboBox1.ListIndex) = Range(" S 20/05/2007")
Donc réexplique mieux pas Où ces données vont mais quoi ?
Car tes Range(("P") & TextBox4.Value) ça ne veut rien dire, et impossible à deviner
@++
<hr size ="2" width="100%" />
--Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 20 mai 2007 à 15:16
Sans trop savoir si j'ai bien compris... voici comment je procéderais
Option Explicit
Private Sub CommandButton2_Click()
Dim Ligne As Long
Dim Rep As Integer
Ligne = GetLigne(ComboBox1.Text) 'retracer la ligne pour écrire les données
If Ligne = -1 Then
MsgBox "La valeur de Combobox1 n'a pas été trouvée"
Exit Sub
End If
Rep = MsgBox("Voulez-vous continuer avec l'enregistrement?", _
vbYesNo, ThisWorkbook.Name)
If Rep = vbNo Then Exit Sub
'Ici change les lettres D à H pour les lettres des cellules
'dans lesquelles tu veux inscrire tes données
Range(" D " & Ligne) = TextBox4.Value
Range("E" & Ligne) = TextBox5.Value
Range(" F " & Ligne) = TextBox6.Value
Range("G" & Ligne) = DTPicker1.Value
Range(" H " & Ligne) = ComboBox2.Value
End Sub
'Function qui retourne la ligne correspondant au texte de Combobox1
Function GetLigne(strTexte) As Long
Dim Recherche As Range
'prendre une ou l'autre selon la valeur recherchée (texte ou numérique)
' Set Recherche = ActiveSheet.Columns("B:B").Find(strTexte) 'valeur texte
Set Recherche = ActiveSheet.Columns("B:B").Find(CLng(strTexte)) 'valeur numérique
If Not Recherche Is Nothing Then
GetLigne = Recherche.Row
Else
GetLigne = -1 'valeur non trouvée
End If
End Function
Il semble que ça fonctionne de cette facon mais je n'aime pas le script car trop long et si je rajoute des TextBoxs pour que les données se rajoute un en dessous de l'autre, ça risque de causer problème.
Voilà le script:
<hr size="2" width="100%" />Private Sub CommandButton2_Click()
Dim Ligne As Long
Dim Rep As Integer
Ligne = GetLigne(ComboBox1.Text) 'retracer la ligne pour écrire les données
If Ligne = -1 Then
MsgBox "La valeur de Combobox1 n'a pas été trouvée"
Exit Sub
End If
Rep = MsgBox("Voulez-vous continuer avec l'enregistrement?", _
vbYesNo, ThisWorkbook.Name)
If Rep = vbNo Then Exit Sub
'Ici change les lettres D à H pour les lettres des cellules
'dans lesquelles tu veux inscrire tes données
Range("P" & Ligne) = TextBox4.Value
Range("Q" & Ligne) = TextBox5.Value
Range("R" & Ligne) = TextBox6.Value
Range("S" & Ligne) = DTPicker1.Value
Range("T" & Ligne) = ComboBox2.Text
Ligne = (Range("P1").End(xlDown).Row + 1)
Range("P" & Ligne) = TextBox10.Value
Ligne = (Range("Q1").End(xlDown).Row + 1)
Range("Q" & Ligne) = TextBox11.Text
Ligne = (Range("R1").End(xlDown).Row + 1)
Range("R" & Ligne) = TextBox12.Text
Ligne = (Range("S1").End(xlDown).Row + 1)
Range("S" & Ligne) = DTPicker2.Value
Ligne = (Range("T1").End(xlDown).Row + 1)
Range("T" & Ligne) = ComboBox3.Value
avyrex1926
Messages postés360Date d'inscriptiondimanche 3 décembre 2006StatutMembreDernière intervention 3 janvier 20123 20 mai 2007 à 16:00
Ouias,,,, merci
Ça fonctionne comme ça.
Merci à vous 2
Private Sub CommandButton2_Click()
Dim Ligne As Long
Dim Rep As Integer
Ligne = GetLigne(ComboBox1.Text) 'retracer la ligne pour écrire les données
If Ligne = -1 Then
MsgBox "La valeur de Combobox1 n'a pas été trouvée"
Exit Sub
End If
Rep = MsgBox("Voulez-vous continuer avec l'enregistrement?", _
vbYesNo, ThisWorkbook.Name)
If Rep = vbNo Then Exit Sub
'Ici change les lettres D à H pour les lettres des cellules
'dans lesquelles tu veux inscrire tes données
Range("P" & Ligne) = TextBox4.Value
Range("Q" & Ligne) = TextBox5.Value
Range("R" & Ligne) = TextBox6.Value
Range("S" & Ligne) = DTPicker1.Value
Range("T" & Ligne) = ComboBox2.Text
Range("P" & Ligne + 1) = TextBox10.Value
Range("Q" & Ligne + 1) = TextBox11.Value
Range("R" & Ligne + 1) = TextBox12.Value
Range("S" & Ligne + 1) = DTPicker2.Value
Range("T" & Ligne + 1) = ComboBox3.Text