formulaire de modification avec Combobox et texbox pre-rempli

bibbip35

XLDnaute Occasionnel
Bonsoir à tous

Je suis a la recherche d'une solution pour creer 1 formulaire de modification

J'ai aujourd'hui 1 userform me permettant d'inserer 1 ligne en remplissant des champs ( Combobox + Tex box )

Ce que je voudrais faire, c'est qu'en selectionnant la 1er combobox ; la deuxieme soit filtrée par rapport
a la 1ER ; la 3ème filtrée en focntion de la 2ème ; puis que les texbox se remplisse ensuite...

Puis que je modifie donc la textbox au choix

J'ai trouvée des exemple sur internet , mais je n'arrive pas à les adapter surement du a mon niveau débutant en VBA

Est que qq aurrait 1 solution simple? Ou est ce compliquée a mettre en oeuvre

Merci a tous

Bonne soirée

A+

Bibbip35
 

Pièces jointes

  • TEST CAPA.xlsm
    246.6 KB · Affichages: 170
  • TEST CAPA.xlsm
    246.6 KB · Affichages: 169
  • TEST CAPA.xlsm
    246.6 KB · Affichages: 170

bibbip35

XLDnaute Occasionnel
Re : formulaire de modification avec Combobox et texbox pre-rempli

Merci de votre retour et de votre aide habituel

J'ai regardé et vu les 2 listes déroulantes...Mais je le pb habituel vous me direz...

Je n'arrive pas à comprendre...quel code mette depuis le début...En effet ; je n'ai pas les bases DU TOUT EN FAITE

Je ne pense pas y arriver pour le moment hélas....donc tans pis...Je prefere abondonnée mon idée...
de modification
pour le moment en tous cas...Je vous fais perdre votre temps sans succès

==> C'était le dernier pt de mon fichier...C'est domage car je trouvais votre principe de Combobox ;Génial...

Ce n'ai pas de lamentation ; mais j'ai pas le niveau....

Pour infos ; j'ai même regardé d'anciens post mais sans succès

En tous cas ; 1 grand merci et Bonne continuation

Bibbip35
 

Dranreb

XLDnaute Barbatruc
Re : formulaire de modification avec Combobox et texbox pre-rempli

Pour la modification, il n'y a pas de problème si, global du fait qu'il est déclaré en tête de l'Userform (est-ce bien enfin le cas ?), VLgn est récupéré dans CL_BingoUn et que vous ne faites alors plus un Redim dessus dans BtnValider_Click. C'est pour la création qu'il peut subsister un problème.
Que lisez vous dans mon module de classe ComboBoxLiés à propos du premier évènement annoncé par une instruction Event, et commenté, de la rubrique "—— ÉVÈNEMENTS PRINCIPAUX PRÉVUS, DANS L'ORDRE OÙ ILS SURVIENNENT ——" ?
 
Dernière édition:

bibbip35

XLDnaute Occasionnel
Re : formulaire de modification avec Combobox et texbox pre-rempli

Bonjour

Je trouve ce code la

Event Change(ByVal Complet As Boolean, ByVal NbrLgn As Long) ' Survient quand un des ComboBox change.
' Complet indique que l'ensemble des ComboBox liés forment la combinaison existante,
' ou qu'au moins 1 porte une valeur inexistante. Ce second sens ne s'applique que si NbrLgn = 0 :
Il faut que je l'intégre dans mon code???

Merci
 

Dranreb

XLDnaute Barbatruc
Re : formulaire de modification avec Combobox et texbox pre-rempli

Non: de retour dans le code de l'Userform vous sélectionnez dans la liste de gauche l'objet CL (si, si, il y est, du fait qu'il est déclaré WithEvents), et dans celle de droite vous sélectionnez donc le nom de cet évènement, et hop! le modèle de la procédure qu'il vous faut est installé ! Il ne reste plus qu'à y mettre le code qui fabrique un VLgn vide, hormis les valeurs de ComboBox, si NbrLgn = 0. C'est ce que je vous demandais de faire au #43.
 
Dernière édition:

bibbip35

XLDnaute Occasionnel
Re : formulaire de modification avec Combobox et texbox pre-rempli

Re bonjour

Bon je me demande vraiment si je vais y arriver...heureusement que vous m'aider...

J'ai installé la procédure; mais ce me redit sub ou fonction non définie???

Voici le code; j'espere que c'est pas trop la cata...

Private Sub BtnValider_Click()

Application.EnableEvents = False

If LCou = 0 Then
LCou = CL.PlgTablo.Rows.Count
With CL.PlgTablo.Rows(LCou): .Copy: .Insert: End With
LCou = LCou + 1: End If

VLgn(1, 8) = Me.TextBox1.Text
VLgn(1, 9) = Me.TextBox10.Text
VLgn(1, 27) = Me.TextBox2.Text
VLgn(1, 30) = Me.TextBox7.Text
VLgn(1, 34) = Me.TextBox8.Text
VLgn(1, 43) = Me.TextBox9.Text
VLgn(1, 10) = Replace(Me.TextBox11.Text, "%", "") / 100
VLgn(1, 11) = Replace(Me.TextBox12.Text, "%", "") / 100
VLgn(1, 12) = Replace(Me.TextBox13.Text, "%", "") / 100
VLgn(1, 13) = Replace(Me.TextBox14.Text, "%", "") / 100
VLgn(1, 14) = Replace(Me.TextBox15.Text, "%", "") / 100
VLgn(1, 15) = Replace(Me.TextBox16.Text, "%", "") / 100
VLgn(1, 16) = Replace(Me.TextBox17.Text, "%", "") / 100
VLgn(1, 17) = Replace(Me.TextBox18.Text, "%", "") / 100
VLgn(1, 18) = Replace(Me.TextBox19.Text, "%", "") / 100
VLgn(1, 19) = Replace(Me.TextBox20.Text, "%", "") / 100
VLgn(1, 20) = Replace(Me.TextBox21.Text, "%", "") / 100
VLgn(1, 21) = Replace(Me.TextBox22.Text, "%", "") / 100
VLgn(1, 33) = Replace(Me.TextBox4.Text, "%", "") / 100


CL.PlgTablo.Rows(LCou).Resize(, 92).Value = VLgn()
CL.Actualiser

Application.EnableEvents = True

End Sub


Private Sub CL_Défait()
Dim Ctrl As Control, C As Long
For Each Ctrl In Me.Controls
C = Val(Ctrl.Tag)
If C > 0 Then Ctrl.Text = ""
Next Ctrl
End Sub



Private Sub CL_BingoUn(ByVal Ligne As Long) ' Prise en charge évènement BingoUn de CL
Dim VLgn() As Variant ' Tableau d'une ligne des valeurs de cellules.
LCou = Ligne ' Récupère le numéro de ligne trouvé et transmis par CL.
VLgn = CL.PlgTablo.Rows(LCou).Resize(, 92).Value
Me.TextBox1.Text = VLgn(1, 8)
Me.TextBox10.Text = VLgn(1, 9)
Me.TextBox2.Text = VLgn(1, 27)
Me.TextBox7.Text = VLgn(1, 30)
Me.TextBox8.Text = VLgn(1, 34)
Me.TextBox9.Text = VLgn(1, 43)
Me.TextBox11.Text = VLgn(1, 10) * 100 & "%"
Me.TextBox12.Text = VLgn(1, 11) * 100 & "%"
Me.TextBox13.Text = VLgn(1, 12) * 100 & "%"
Me.TextBox14.Text = VLgn(1, 13) * 100 & "%"
Me.TextBox15.Text = VLgn(1, 14) * 100 & "%"
Me.TextBox16.Text = VLgn(1, 15) * 100 & "%"
Me.TextBox17.Text = VLgn(1, 16) * 100 & "%"
Me.TextBox18.Text = VLgn(1, 17) * 100 & "%"
Me.TextBox19.Text = VLgn(1, 18) * 100 & "%"
Me.TextBox20.Text = VLgn(1, 19) * 100 & "%"
Me.TextBox21.Text = VLgn(1, 20) * 100 & "%"
Me.TextBox22.Text = VLgn(1, 21) * 100 & "%"
Me.TextBox4.Text = VLgn(1, 33) * 100 & "%"


End Sub


Private Sub UserForm_Initialize() ' Prise en charge évènement MsForms au chargement de l'Userform.
Set CL = New ComboBoxLiés ' Attribue une existence réelle à l'objet (addresse et ressources mémoire)
CL.CouleurSympa ' Gadget d'assistance de confort.
CL.Plage Feuil1.Rows(7) ' Plage à partir de la ligne 7 de Feuil1 (Config. lignes). Devient CL.PlgTablo
CL.Add Me.ComboBox1, "A"
CL.Add Me.ComboBox2, "F"
CL.Add Me.ComboBox3, "G"
CL.Actualiser ' Met à jour les listes initiales des ComboBox.
End Sub


Et surout....

Private Sub CL_Change(ByVal Complet As Boolean, ByVal I As Long)

LCou = 0
ReDim VLgn(1 To 1, 1 To 43)
For I = 1 To 3: With CL.Item(I): VLgn(1, .Col) = .CBx.Text: End With: Next I

End Sub


MERCI
 

Dranreb

XLDnaute Barbatruc
Re : formulaire de modification avec Combobox et texbox pre-rempli

VLgn doit seulement être déclaré en tête de l'Userform et plus nulle part ailleurs. En l'ayant déclaré aussi dans CL_BingoUn, elle y devient une variable locale qui prend le pas, localement, sur la variable globale, et du coup celle ci n'est pas modifiée. Remarque: Redim n'est pas une instruction de déclaration, c'est seulement Dim qui en est une. Dim VLgn() As Variant doit seulement être déclaré en tête du Userform, derrière LCou, par exemple.
 
Dernière édition:

bibbip35

XLDnaute Occasionnel
Re : formulaire de modification avec Combobox et texbox pre-rempli

Bonjour Dranreb

Ca fonctionne !!!! Merci pour toutes l'aide et la patience!!!

Par contre , juste 1 dernière question,dans mon userform j'ai des conditions de verification de saisie...elle fonctionne tous sauf
Qd je compare mes valeurs texbox a 100% & 0%
Si Textbox > 100% et <0% = msg box

J'utilise me code ci-dessous mais la variable n'est pas definie/ Aurriez vous une idée par hazard?

splitTexbox4 = Split(TextBox4.Value, "%")
ValTextBox4 = Val(Replace(splitTexbox4(0), ",", "."))
'La fonction Val donne une valeur numérique qu'il faut comparer ensuite avec des valeurs numériques
If ValTextBox4 > 100 Or ValTextBox4 < 0 Then
MsgBox "Attention, le % de la production affecter sur la ligne" & Chr(13) & "est incohérent : Il doit se situer entre 0% et 100% ", vbCritical, "Données Incohérantes"
Exit Sub
End If
If ValTextBox4 < 100 Then
Select Case MsgBox("Attention, le % de la production est inférieur a 100% " & Chr(13) & "Etes-vous certain de votre choix ? " & Chr(13) & "Si oui , la production doit être affectée également sur une autre ligne ", vbOKCancel + vbQuestion, "Données Incohérantes")
Case vbOK
'procédure si click sur Ok
Case vbCancel
Exit Sub
End Select
End If
 

Dranreb

XLDnaute Barbatruc
Re : formulaire de modification avec Combobox et texbox pre-rempli

Bonjour.

Non, comme ça je ne vois pas ce qui cloche. Mettez des espions, au moment de l'exécution sur les expressions qui composent l'instruction qui plante, si toutefois c'est bien une erreur d'exécution et non une erreur de compilation.
 

bibbip35

XLDnaute Occasionnel
Re : formulaire de modification avec Combobox et texbox pre-rempli

Bonjour

Merci encore 1 fois de votre retour

J'ai ajouté un espion sur la procéudure
Et ca me met 1 erreur de compilation

Impossible de compiler le module

MERCI
 

Dranreb

XLDnaute Barbatruc
Re : formulaire de modification avec Combobox et texbox pre-rempli

Vérifiez si vous avez bien déclaré les variables que vous utilisez dans la procédure. Mais normalement, à la compilation, il met plutôt variable non déclarée et pas variable non définie. Non défini c'est plutôt une erreur d'exécution quand par exemple une variable objet à dûment été déclarée mais qu'au moment de l'exécution aucune instance ne lui a été attribuée par un Set.
 

bibbip35

XLDnaute Occasionnel
Re : formulaire de modification avec Combobox et texbox pre-rempli

merci

Quand je declare ma variable en tête de l'userform
Dim splitTexbox4 As Integer

Ca me met "Tableau attendu"???

Merci en tous les cas, je pense que je pourrais jamais assez vous remercier....
 

bibbip35

XLDnaute Occasionnel
Re : formulaire de modification avec Combobox et texbox pre-rempli

Bonjour

Je reviens vers Dranreb, sur la modification
mais en faite, j'ai 1 souci qui perdure en faite , ca me conserve bien les cellules mais
ca supprime toutes les formules qui était contennu auparavent...

Pourriez vous regarder mon code SVP???

Merci d'avance

Option Explicit ' Pour limiter les risques de faire des conneries.
Dim WithEvents CL As ComboBoxLiés ' Objet global avec évènements. Vois module de classe ComboBoxLiés.
Dim LCou As Long ' Numéro courant de la ligne en cours de modification (variable globale).
Dim VLgn() As Variant
Dim Ret As Integer
Dim Repmodif As Integer


Private Sub CheckBox1_Click()
Select Case CheckBox1.Value
Case True: CheckBox1.Caption = "toto"
End Select

End Sub

Private Sub CheckBox2_Click()

End Sub

Private Sub carte_par_flan_Click()

End Sub

Private Sub CL_AutreChoix(ByVal CBM As ComboBoxMembre, Valeur As Variant)

End Sub

Private Sub CL_Change(ByVal Complet As Boolean, ByVal I As Long)

LCou = 0
ReDim VLgn(1 To 1, 1 To 43)
For I = 1 To 3: With CL.Item(I): VLgn(1, .Col) = .CBx.Text: End With: Next I

End Sub

Private Sub CL_Click(ByVal CBM As ComboBoxMembre)

End Sub

Private Sub ComboBox1_Change()

End Sub

Private Sub ComboBox2_Change()

End Sub

Private Sub ComboBox3_Change()

End Sub

Private Sub CommandButton4_Click()
FORM_MODIF_CONFIG_LIGNES.Hide
Unload FORM_MODIF_CONFIG_LIGNES
Application.EnableEvents = True
End Sub


Private Sub Label11_Click()

End Sub

Private Sub Label17_Click()

End Sub

Private Sub pourcentage_Click()

End Sub


Private Sub TextBox1_KeyPress(ByVal Touche As MSForms.ReturnInteger)
If InStr("0123456789,", Chr(Touche)) = 0 Then Touche = 0
TextBox1.BackColor = RGB(255, 0, 0) 'couleur rouge
TextBox1.ForeColor = RGB(255, 255, 255) 'couleur blanc
End Sub
Private Sub TextBox10_KeyPress(ByVal Touche As MSForms.ReturnInteger)

If InStr("0123456789,", Chr(Touche)) = 0 Then Touche = 0
TextBox10.BackColor = RGB(255, 0, 0) 'couleur rouge
TextBox10.ForeColor = RGB(255, 255, 255) 'couleur blanc

End Sub
Private Sub TextBox2_KeyPress(ByVal Touche As MSForms.ReturnInteger)

If InStr("0123456789,", Chr(Touche)) = 0 Then Touche = 0
TextBox2.BackColor = RGB(255, 0, 0) 'couleur rouge
TextBox2.ForeColor = RGB(255, 255, 255) 'couleur blanc

End Sub
Private Sub TextBox7_KeyPress(ByVal Touche As MSForms.ReturnInteger)

If InStr("0123456789,", Chr(Touche)) = 0 Then Touche = 0
TextBox7.BackColor = RGB(255, 0, 0) 'couleur rouge
TextBox7.ForeColor = RGB(255, 255, 255) 'couleur blanc

End Sub
Private Sub TextBox8_KeyPress(ByVal Touche As MSForms.ReturnInteger)

If InStr("0123456789,", Chr(Touche)) = 0 Then Touche = 0
TextBox8.BackColor = RGB(255, 0, 0) 'couleur rouge
TextBox8.ForeColor = RGB(255, 255, 255) 'couleur blanc

End Sub
Private Sub TextBox4_KeyPress(ByVal Touche As MSForms.ReturnInteger)

If InStr("0123456789%", Chr(Touche)) = 0 Then Touche = 0
TextBox4.BackColor = RGB(255, 0, 0) 'couleur rouge
TextBox4.ForeColor = RGB(255, 255, 255) 'couleur blanc

End Sub
Private Sub TextBox11_KeyPress(ByVal Touche As MSForms.ReturnInteger)

If InStr("0123456789%", Chr(Touche)) = 0 Then Touche = 0
TextBox11.BackColor = RGB(255, 0, 0) 'couleur rouge
TextBox11.ForeColor = RGB(255, 255, 255) 'couleur blanc
End Sub
Private Sub TextBox12_KeyPress(ByVal Touche As MSForms.ReturnInteger)

If InStr("0123456789%", Chr(Touche)) = 0 Then Touche = 0
TextBox12.BackColor = RGB(255, 0, 0) 'couleur rouge
TextBox12.ForeColor = RGB(255, 255, 255) 'couleur blanc
End Sub
Private Sub TextBox13_KeyPress(ByVal Touche As MSForms.ReturnInteger)

If InStr("0123456789%", Chr(Touche)) = 0 Then Touche = 0
TextBox13.BackColor = RGB(255, 0, 0) 'couleur rouge
TextBox13.ForeColor = RGB(255, 255, 255) 'couleur blanc
End Sub
Private Sub TextBox14_KeyPress(ByVal Touche As MSForms.ReturnInteger)

If InStr("0123456789%", Chr(Touche)) = 0 Then Touche = 0
TextBox14.BackColor = RGB(255, 0, 0) 'couleur rouge
TextBox14.ForeColor = RGB(255, 255, 255) 'couleur blanc
End Sub
Private Sub TextBox15_KeyPress(ByVal Touche As MSForms.ReturnInteger)

If InStr("0123456789%", Chr(Touche)) = 0 Then Touche = 0
TextBox15.BackColor = RGB(255, 0, 0) 'couleur rouge
TextBox15.ForeColor = RGB(255, 255, 255) 'couleur blanc
End Sub
Private Sub TextBox16_KeyPress(ByVal Touche As MSForms.ReturnInteger)

If InStr("0123456789%", Chr(Touche)) = 0 Then Touche = 0
TextBox16.BackColor = RGB(255, 0, 0) 'couleur rouge
TextBox16.ForeColor = RGB(255, 255, 255) 'couleur blanc
End Sub
Private Sub TextBox17_KeyPress(ByVal Touche As MSForms.ReturnInteger)

If InStr("0123456789%", Chr(Touche)) = 0 Then Touche = 0
TextBox17.BackColor = RGB(255, 0, 0) 'couleur rouge
TextBox17.ForeColor = RGB(255, 255, 255) 'couleur blanc
End Sub
Private Sub TextBox18_KeyPress(ByVal Touche As MSForms.ReturnInteger)

If InStr("0123456789%", Chr(Touche)) = 0 Then Touche = 0
TextBox18.BackColor = RGB(255, 0, 0) 'couleur rouge
TextBox18.ForeColor = RGB(255, 255, 255) 'couleur blanc
End Sub
Private Sub TextBox19_KeyPress(ByVal Touche As MSForms.ReturnInteger)

If InStr("0123456789%", Chr(Touche)) = 0 Then Touche = 0
TextBox19.BackColor = RGB(255, 0, 0) 'couleur rouge
TextBox19.ForeColor = RGB(255, 255, 255) 'couleur blanc
End Sub
Private Sub TextBox20_KeyPress(ByVal Touche As MSForms.ReturnInteger)

If InStr("0123456789%", Chr(Touche)) = 0 Then Touche = 0
TextBox20.BackColor = RGB(255, 0, 0) 'couleur rouge
TextBox20.ForeColor = RGB(255, 255, 255) 'couleur blanc
End Sub
Private Sub TextBox21_KeyPress(ByVal Touche As MSForms.ReturnInteger)

If InStr("0123456789%", Chr(Touche)) = 0 Then Touche = 0
TextBox21.BackColor = RGB(255, 0, 0) 'couleur rouge
TextBox21.ForeColor = RGB(255, 255, 255) 'couleur blanc
End Sub
Private Sub TextBox22_KeyPress(ByVal Touche As MSForms.ReturnInteger)

If InStr("0123456789%", Chr(Touche)) = 0 Then Touche = 0
TextBox22.BackColor = RGB(255, 0, 0) 'couleur rouge
TextBox22.ForeColor = RGB(255, 255, 255) 'couleur blanc
End Sub
Private Sub TextBox9_KeyPress(ByVal Touche As MSForms.ReturnInteger)
TextBox9.BackColor = RGB(255, 0, 0) 'couleur rouge
TextBox9.ForeColor = RGB(255, 255, 255) 'couleur blanc
End Sub

Private Sub TextBox11_Change()
End Sub

Private Sub TextBox12_Change()

End Sub

Private Sub TextBox13_Change()

End Sub

Private Sub TextBox14_Change()

End Sub

Private Sub TextBox15_Change()

End Sub

Private Sub TextBox16_Change()

End Sub

Private Sub TextBox17_Change()

End Sub

Private Sub TextBox18_Change()

End Sub

Private Sub TextBox19_Change()

End Sub


Private Sub TextBox20_Change()

End Sub

Private Sub TextBox21_Change()

End Sub

Private Sub TextBox22_Change()

End Sub

Private Sub TextBox4_Change()

End Sub




Private Sub TextBox9_Change()

End Sub

Private Sub UserForm_Click()

End Sub
Private Sub UserForm_Initialize() ' Prise en charge évènement MsForms au chargement de l'Userform.
Set CL = New ComboBoxLiés ' Attribue une existence réelle à l'objet (addresse et ressources mémoire)
CL.CouleurSympa ' Gadget d'assistance de confort.
CL.Plage Feuil1.Rows(7) ' Plage à partir de la ligne 7 de Feuil1 (Config. lignes). Devient CL.PlgTablo
CL.Add Me.ComboBox1, "A"
CL.Add Me.ComboBox3, "G"
CL.Add Me.ComboBox2, "F"
CL.Actualiser ' Met à jour les listes initiales des ComboBox.
End Sub

Private Sub CL_BingoUn(ByVal Ligne As Long) ' Prise en charge évènement BingoUn de CL
LCou = Ligne ' Récupère le numéro de ligne trouvé et transmis par CL.
VLgn = CL.PlgTablo.Rows(LCou).Resize(, 92).Value
Me.TextBox1.Text = VLgn(1, 8)
Me.TextBox10.Text = VLgn(1, 9)
Me.TextBox2.Text = VLgn(1, 27)
Me.TextBox7.Text = VLgn(1, 30)
Me.TextBox8.Text = VLgn(1, 34)
Me.TextBox9.Text = VLgn(1, 43)
Me.TextBox11.Text = VLgn(1, 10) * 100 & "%"
Me.TextBox12.Text = VLgn(1, 11) * 100 & "%"
Me.TextBox13.Text = VLgn(1, 12) * 100 & "%"
Me.TextBox14.Text = VLgn(1, 13) * 100 & "%"
Me.TextBox15.Text = VLgn(1, 14) * 100 & "%"
Me.TextBox16.Text = VLgn(1, 15) * 100 & "%"
Me.TextBox17.Text = VLgn(1, 16) * 100 & "%"
Me.TextBox18.Text = VLgn(1, 17) * 100 & "%"
Me.TextBox19.Text = VLgn(1, 18) * 100 & "%"
Me.TextBox20.Text = VLgn(1, 19) * 100 & "%"
Me.TextBox21.Text = VLgn(1, 20) * 100 & "%"
Me.TextBox22.Text = VLgn(1, 21) * 100 & "%"
Me.TextBox4.Text = VLgn(1, 33) * 100 & "%"


End Sub

Private Sub CL_Défait()
Dim Ctrl As Control, C As Long
For Each Ctrl In Me.Controls
C = Val(Ctrl.Tag)
If C > 0 Then Ctrl.Text = ""
Next Ctrl
End Sub

Private Sub BtnValider_Click()

Application.EnableEvents = False



If LCou = 0 Then
LCou = CL.PlgTablo.Rows.Count
With CL.PlgTablo.Rows(LCou): .Copy: .Insert: End With
LCou = LCou + 1: End If


'controle saisie '

If ComboBox1 <> Range("UW2") And ComboBox1 <> Range("UX2") And ComboBox1 <> Range("UY2") And ComboBox1 <> Range("UZ2") And ComboBox1 <> Range("VA2") And ComboBox1 <> Range("VB2") And ComboBox1 <> Range("VC2") And ComboBox1 <> Range("VD2") And ComboBox1 <> Range("VE2") And ComboBox1 <> Range("VF2") And ComboBox1 <> Range("VG2") And ComboBox1 <> Range("VH2") Then
MsgBox "La ligne renseignée n'existe pas sur le pôle Energie", vbCritical, "Données incorrect"
Exit Sub
End If

If TextBox11 = "" Then
MsgBox "Vous devez renseigner sur le mois de Janvier " & Chr(13) & "le % de la production à affecter ; avant de valider", vbCritical, "Données manquantes"
Exit Sub
End If
If TextBox12 = "" Then
MsgBox "Vous devez renseigner sur le mois de Février " & Chr(13) & "le % de la production à affecter ; avant de valider", vbCritical, "Données manquantes"
Exit Sub
End If
If TextBox13 = "" Then
MsgBox "Vous devez renseigner sur le mois de Mars " & Chr(13) & "le % de la production à affecter ; avant de valider", vbCritical, "Données manquantes"
Exit Sub
End If
If TextBox14 = "" Then
MsgBox "Vous devez renseigner sur le mois d'Avril " & Chr(13) & "le % de la production à affecter ; avant de valider", vbCritical, "Données manquantes"
Exit Sub
End If
If TextBox15 = "" Then
MsgBox "Vous devez renseigner sur le mois de Mai " & Chr(13) & "le % de la production à affecter ; avant de valider", vbCritical, "Données manquantes"
Exit Sub
End If
If TextBox16 = "" Then
MsgBox "Vous devez renseigner sur le mois de Juin " & Chr(13) & "le % de la production à affecter ; avant de valider", vbCritical, "Données manquantes"
Exit Sub
End If
If TextBox17 = "" Then
MsgBox "Vous devez renseigner sur le mois de Juillet " & Chr(13) & "le % de la production à affecter ; avant de valider", vbCritical, "Données manquantes"
Exit Sub
End If
If TextBox18 = "" Then
MsgBox "Vous devez renseigner sur le mois d'Août " & Chr(13) & "le % de la production à affecter ; avant de valider", vbCritical, "Données manquantes"
Exit Sub
End If
If TextBox19 = "" Then
MsgBox "Vous devez renseigner sur le mois de Septembre " & Chr(13) & "le % de la production à affecter ; avant de valider", vbCritical, "Données manquantes"
Exit Sub
End If
If TextBox20 = "" Then
MsgBox "Vous devez renseigner sur le mois d'Octobre " & Chr(13) & "le % de la production à affecter ; avant de valider", vbCritical, "Données manquantes"
Exit Sub
End If
If TextBox21 = "" Then
MsgBox "Vous devez renseigner sur le mois de Novembre " & Chr(13) & "le % de la production à affecter ; avant de valider", vbCritical, "Données manquantes"
Exit Sub
End If
If TextBox22 = "" Then
MsgBox "Vous devez renseigner sur le mois de Décembre " & Chr(13) & "le % de la production à affecter ; avant de valider", vbCritical, "Données manquantes"
Exit Sub
End If
If TextBox1 = "" Then
MsgBox "Vous devez renseigner un nombre de carte par flan ; avant de valider", vbCritical, "Données manquantes"
Exit Sub
End If

If TextBox10 = "" Then
MsgBox "Vous devez renseigner un nombre de Cpts par carte ; avant de valider", vbCritical, "Données manquantes"
Exit Sub
End If
If TextBox2 = "" Then
MsgBox "Vous devez renseigner le Tps de cycle CMS ; avant de valider", vbCritical, "Données manquantes"
Exit Sub
End If

If TextBox7 = "" Then
MsgBox "Vous devez renseigner le Tps de cycle ICT ; avant de valider", vbCritical, "Données manquantes"
Exit Sub
End If

If TextBox8 = "" Then
MsgBox "Vous devez renseigner le nombre de testeur ; avant de valider", vbCritical, "Données manquantes"
Exit Sub
End If

If TextBox9 = "" Then
MsgBox "Vous devez renseigner à quelle plan de chargement" & Chr(13) & " Appartient la carte ; avant de valider", vbCritical, "Données manquantes"
Exit Sub
End If




If TextBox4 <> "" And InStr(TextBox4, "%") = 0 Then
MsgBox "La valeur saisie dans la case - % affecté à la ligne -" & Chr(13) & "doit être exprimé en pourcentage", vbInformation, "Saisies incorrect"
Exit Sub
End If

If TextBox11 <> "" And InStr(TextBox11, "%") = 0 Then
MsgBox "La valeur saisie dans la case - % affecté sur le mois de Janvier -" & Chr(13) & "doit être exprimé en pourcentage", vbInformation, "Saisies incorrect"
Exit Sub
End If

If TextBox12 <> "" And InStr(TextBox12, "%") = 0 Then
MsgBox "La valeur saisie dans la case - % affecté sur le mois de Février -" & Chr(13) & "doit être exprimé en pourcentage", vbInformation, "Saisies incorrect"
Exit Sub
End If

If TextBox13 <> "" And InStr(TextBox13, "%") = 0 Then
MsgBox "La valeur saisie dans la case - % affecté sur le mois de Mars -" & Chr(13) & "doit être exprimé en pourcentage", vbInformation, "Saisies incorrect"
Exit Sub
End If

If TextBox14 <> "" And InStr(TextBox14, "%") = 0 Then
MsgBox "La valeur saisie dans la case - % affecté sur le mois de Avril -" & Chr(13) & "doit être exprimé en pourcentage", vbInformation, "Saisies incorrect"
Exit Sub
End If

If TextBox15 <> "" And InStr(TextBox15, "%") = 0 Then
MsgBox "La valeur saisie dans la case - % affecté sur le mois de Mai -" & Chr(13) & "doit être exprimé en pourcentage", vbInformation, "Saisies incorrect"
Exit Sub
End If

If TextBox16 <> "" And InStr(TextBox16, "%") = 0 Then
MsgBox "La valeur saisie dans la case - % affecté sur le mois de Juin -" & Chr(13) & "doit être exprimé en pourcentage", vbInformation, "Saisies incorrect"
Exit Sub
End If

If TextBox17 <> "" And InStr(TextBox17, "%") = 0 Then
MsgBox "La valeur saisie dans la case - % affecté sur le mois de Juillet -" & Chr(13) & "doit être exprimé en pourcentage", vbInformation, "Saisies incorrect"
Exit Sub
End If

If TextBox18 <> "" And InStr(TextBox18, "%") = 0 Then
MsgBox "La valeur saisie dans la case - % affecté sur le mois de Août -" & Chr(13) & "doit être exprimé en pourcentage", vbInformation, "Saisies incorrect"
Exit Sub
End If

If TextBox19 <> "" And InStr(TextBox19, "%") = 0 Then
MsgBox "La valeur saisie dans la case - % affecté sur le mois de Septembre -" & Chr(13) & "doit être exprimé en pourcentage", vbInformation, "Saisies incorrect"
Exit Sub
End If

If TextBox20 <> "" And InStr(TextBox20, "%") = 0 Then
MsgBox "La valeur saisie dans la case - % affecté sur le mois de Octobre -" & Chr(13) & "doit être exprimé en pourcentage", vbInformation, "Saisies incorrect"
Exit Sub
End If

If TextBox21 <> "" And InStr(TextBox21, "%") = 0 Then
MsgBox "La valeur saisie dans la case - % affecté sur le mois de Novembre -" & Chr(13) & "doit être exprimé en pourcentage", vbInformation, "Saisies incorrect"
Exit Sub
End If

If TextBox22 <> "" And InStr(TextBox22, "%") = 0 Then
MsgBox "La valeur saisie dans la case - % affecté sur le mois de Décembre -" & Chr(13) & "doit être exprimé en pourcentage", vbInformation, "Saisies incorrect"
Exit Sub
End If


Repmodif = MsgBox("Confirmez-vous la modification des valeurs ?" & Chr(13) & "Nota : Les valeurs modifiées sont de couleur rouge", vbYesNo + vbQuestion, "Formulaire de modification")
If Repmodif = vbYes Then ' ici le traitement si réponse positive ' ...
Else
Exit Sub ' ici le traitement si réponse négative ' ...
End If

VLgn(1, 8) = Me.TextBox1.Text
VLgn(1, 9) = Me.TextBox10.Text
VLgn(1, 27) = Me.TextBox2.Text
VLgn(1, 30) = Me.TextBox7.Text
VLgn(1, 34) = Me.TextBox8.Text
VLgn(1, 43) = Me.TextBox9.Text
VLgn(1, 10) = Replace(Me.TextBox11.Text, "%", "") / 100
VLgn(1, 11) = Replace(Me.TextBox12.Text, "%", "") / 100
VLgn(1, 12) = Replace(Me.TextBox13.Text, "%", "") / 100
VLgn(1, 13) = Replace(Me.TextBox14.Text, "%", "") / 100
VLgn(1, 14) = Replace(Me.TextBox15.Text, "%", "") / 100
VLgn(1, 15) = Replace(Me.TextBox16.Text, "%", "") / 100
VLgn(1, 16) = Replace(Me.TextBox17.Text, "%", "") / 100
VLgn(1, 17) = Replace(Me.TextBox18.Text, "%", "") / 100
VLgn(1, 18) = Replace(Me.TextBox19.Text, "%", "") / 100
VLgn(1, 19) = Replace(Me.TextBox20.Text, "%", "") / 100
VLgn(1, 20) = Replace(Me.TextBox21.Text, "%", "") / 100
VLgn(1, 21) = Replace(Me.TextBox22.Text, "%", "") / 100
VLgn(1, 33) = Replace(Me.TextBox4.Text, "%", "") / 100


CL.PlgTablo.Rows(LCou).Resize(, 92).Value = VLgn()
CL.Actualiser

Application.EnableEvents = True

If Range("VJ2") <> Range("VI1") Then Ret = MsgBox("Les Qtés à fabriquer en Janvier sont devennu incohérantes par rapport aux Qtés du PDP" & Chr(13) & "Ecarts Qté produits mensuel : " & Format(Range("VJ2").Value) & Chr(13) & "Voulez vérifiez l'écart dans l'Onglet - Vérification PDP vs Capacitaire - ? ", vbYesNo + vbCritical, "Problèmes Qtés entre fichier et PDP")
If Ret = vbYes Then
Sheets("Recap Qtes Produits vérif").Select
Unload FORM_MODIF_CONFIG_LIGNES
End If

If Range("VK2") <> Range("VI1") Then Ret = MsgBox("Les Qtés à fabriquer en Février sont devennu incohérantes par rapport aux Qtés du PDP" & Chr(13) & "Ecarts Qté produits mensuel : " & Format(Range("VK2").Value) & Chr(13) & "Voulez vérifiez l'écart dans l'Onglet - Vérification PDP vs Capacitaire - ? ", vbYesNo + vbCritical, "Problèmes Qtés entre fichier et PDP")
If Ret = vbYes Then
Sheets("Recap Qtes Produits vérif").Select
Unload FORM_MODIF_CONFIG_LIGNES
End If

If Range("VL2") <> Range("VI1") Then Ret = MsgBox("Les Qtés à fabriquer en Mars sont devennu incohérantes par rapport aux Qtés du PDP" & Chr(13) & "Ecarts Qté produits mensuel : " & Format(Range("VL2").Value) & Chr(13) & "Voulez vérifiez l'écart dans l'Onglet - Vérification PDP vs Capacitaire - ? ", vbYesNo + vbCritical, "Problèmes Qtés entre fichier et PDP")
If Ret = vbYes Then
Sheets("Recap Qtes Produits vérif").Select
Unload FORM_MODIF_CONFIG_LIGNES
End If

If Range("VM2") <> Range("VI1") Then Ret = MsgBox("Les Qtés à fabriquer en Avril sont devennu incohérantes par rapport aux Qtés du PDP" & Chr(13) & "Ecarts Qté produits mensuel : " & Format(Range("VM2").Value) & Chr(13) & "Voulez vérifiez l'écart dans l'Onglet - Vérification PDP vs Capacitaire - ? ", vbYesNo + vbCritical, "Problèmes Qtés entre fichier et PDP")
If Ret = vbYes Then
Sheets("Recap Qtes Produits vérif").Select
Unload FORM_MODIF_CONFIG_LIGNES
End If

If Range("VN2") <> Range("VI1") Then Ret = MsgBox("Les Qtés à fabriquer en Mai sont devennu incohérantes par rapport aux Qtés du PDP" & Chr(13) & "Ecarts Qté produits mensuel : " & Format(Range("VN2").Value) & Chr(13) & "Voulez vérifiez l'écart dans l'Onglet - Vérification PDP vs Capacitaire - ? ", vbYesNo + vbCritical, "Problèmes Qtés entre fichier et PDP")
If Ret = vbYes Then
Sheets("Recap Qtes Produits vérif").Select
Unload FORM_MODIF_CONFIG_LIGNES
End If

If Range("VO2") <> Range("VI1") Then Ret = MsgBox("Les Qtés à fabriquer en Juin sont devennu incohérantes par rapport aux Qtés du PDP" & Chr(13) & "Ecarts Qté produits mensuel : " & Format(Range("VO2").Value) & Chr(13) & "Voulez vérifiez l'écart dans l'Onglet - Vérification PDP vs Capacitaire - ? ", vbYesNo + vbCritical, "Problèmes Qtés entre fichier et PDP")
If Ret = vbYes Then
Sheets("Recap Qtes Produits vérif").Select
Unload FORM_MODIF_CONFIG_LIGNES
End If

If Range("VP2") <> Range("VI1") Then Ret = MsgBox("Les Qtés à fabriquer en Juillet sont devennu incohérantes par rapport aux Qtés du PDP" & Chr(13) & "Ecarts Qté produits mensuel : " & Format(Range("VP2").Value) & Chr(13) & "Voulez vérifiez l'écart dans l'Onglet - Vérification PDP vs Capacitaire - ? ", vbYesNo + vbCritical, "Problèmes Qtés entre fichier et PDP")
If Ret = vbYes Then
Sheets("Recap Qtes Produits vérif").Select
Unload FORM_MODIF_CONFIG_LIGNES
End If

If Range("VQ2") <> Range("VI1") Then Ret = MsgBox("Les Qtés à fabriquer en Août sont devennu incohérantes par rapport aux Qtés du PDP" & Chr(13) & "Ecarts Qté produits mensuel : " & Format(Range("VQ2").Value) & Chr(13) & "Voulez vérifiez l'écart dans l'Onglet - Vérification PDP vs Capacitaire - ? ", vbYesNo + vbCritical, "Problèmes Qtés entre fichier et PDP")
If Ret = vbYes Then
Sheets("Recap Qtes Produits vérif").Select
Unload FORM_MODIF_CONFIG_LIGNES
End If

If Range("VR2") <> Range("VI1") Then Ret = MsgBox("Les Qtés à fabriquer en Septembre sont devennu incohérantes par rapport aux Qtés du PDP" & Chr(13) & "Ecarts Qté produits mensuel : " & Format(Range("VR2").Value) & Chr(13) & "Voulez vérifiez l'écart dans l'Onglet - Vérification PDP vs Capacitaire - ? ", vbYesNo + vbCritical, "Problèmes Qtés entre fichier et PDP")
If Ret = vbYes Then
Sheets("Recap Qtes Produits vérif").Select
Unload FORM_MODIF_CONFIG_LIGNES
End If

If Range("VS2") <> Range("VI1") Then Ret = MsgBox("Les Qtés à fabriquer en Octobre sont devennu incohérantes par rapport aux Qtés du PDP" & Chr(13) & "Ecarts Qté produits mensuel : " & Format(Range("VS2").Value) & Chr(13) & "Voulez vérifiez l'écart dans l'Onglet - Vérification PDP vs Capacitaire - ? ", vbYesNo + vbCritical, "Problèmes Qtés entre fichier et PDP")
If Ret = vbYes Then
Sheets("Recap Qtes Produits vérif").Select
Unload FORM_MODIF_CONFIG_LIGNES
End If

If Range("VT2") <> Range("VI1") Then Ret = MsgBox("Les Qtés à fabriquer en Novembre sont devennu incohérantes par rapport aux Qtés du PDP" & Chr(13) & "Ecarts Qté produits mensuel : " & Format(Range("VT2").Value) & Chr(13) & "Voulez vérifiez l'écart dans l'Onglet - Vérification PDP vs Capacitaire - ? ", vbYesNo + vbCritical, "Problèmes Qtés entre fichier et PDP")
If Ret = vbYes Then
Sheets("Recap Qtes Produits vérif").Select
Unload FORM_MODIF_CONFIG_LIGNES
End If

If Range("VU2") <> Range("VI1") Then Ret = MsgBox("Les Qtés à fabriquer en Décembre sont devennu incohérantes par rapport aux Qtés du PDP" & Chr(13) & "Ecarts Qté produits mensuel : " & Format(Range("VU2").Value) & Chr(13) & "Voulez vérifiez l'écart dans l'Onglet - Vérification PDP vs Capacitaire - ? ", vbYesNo + vbCritical, "Problèmes Qtés entre fichier et PDP")
If Ret = vbYes Then
Sheets("Recap Qtes Produits vérif").Select
Unload FORM_MODIF_CONFIG_LIGNES
End If

Unload FORM_MODIF_CONFIG_LIGNES

End Sub
 

Dranreb

XLDnaute Barbatruc
Re : formulaire de modification avec Combobox et texbox pre-rempli

La valeur retournée par la fonction Split se déclare en principe Dim TSpl() As String
Ne reproduisez plus dans vos postes des tonnes de codes sans balise highlight=vb ou au moins CODE.
Joignez plutôt, à ce compte là, un classeur, où je puisse faire des recherches et des essais de compilation.
S'il y a des formules identiques dans toutes les lignes à partir d'une certaine colonne il faut arrêter les Resize(, x) avec x avant cette colonne. Pour une création, la ligne With CL.PlgTablo.Rows(LCou): .Copy: .Insert: End With reproduira néanmoins les formules de la dernière ligne car CL.PlgTablo est une plage de lignes entières.
 

bibbip35

XLDnaute Occasionnel
Re : formulaire de modification avec Combobox et texbox pre-rempli

Bonsoir

Voici ci-joint 1 fichier pour test que j'ai compressé au max.


Je vous remercie par avance pour votre aide


MERCI

Bibbip35
 

Pièces jointes

  • Copie de capacitaire Energy TEST OUTIDIX.xlsm
    282 KB · Affichages: 72

Dranreb

XLDnaute Barbatruc
Re : formulaire de modification avec Combobox et texbox pre-rempli

Le mieux à mon avis c'est de ne plus utiliser de formules et de calculer plutôt leurs valeurs dans VLgn. Ou alors il faut les mettre à la fin, à droite.
Mettre ensemble, devant, tout ce qui peut être modifié par l'Userform et seulement après les formules.
Sinon il y a une autre solution très pénalisante: ne plus charger et décharger en bloc les valeurs de la ligne au moyen de VLgn mais accéder au coup par coup aux seules cellule concernées. Mais je vous le déconseille: on pourrait avoir le temps de voir les TextBox se garnir l'un après l'autre, et ça donnerait une impression de lenteur aussi vraie que ce sera le cas. D'une manière générale la durée d'exécution d'une macro est presque proportionnelle au nombre de fois qu'on accède à des plages et ne dépend pratiquement pas de leurs tailles en cellules ni donc du nombre de valeurs transmise dans ou depuis des tableaux lors de chacun des accès.
On pourrait à la rigueur limiter les dégats en utilisant 3 ou 4 tableaux comme VLgn pour des groupes de cellules constantes séparées par des groupes de cellules à formules. Mais moi, je préfèrerais ne plus avoir de formule du tout: autant en profiter pour les calculer puisque de toute façon la ligne vous passe dans les mains (c'est imagé, je veux dire est traitée par l'Userform)
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof