VBA , Combobox
Bonjour à tous , je suis en train de mettre au point un fichier professionnel d'édition de documents transport et j'ai besoin de votre aide .
Je m'explique :
Onglet ZDGN HSO OUDALLE
CLIC sur le bouton " EDITER LA ZDGN " ( ce qui m'ouvre userform8 dans VISUAL BASIC )
Dans ma COMBOBOX1 appelée ( DELIVERY INNOSPEC ) prenez la commande 70026281 ( c'est ma 1ère simulation )
Automatiquement , tout s'affiche dans les TEXTBOXS ( ma base de donnée étant le tableau dans l'ONGLET HSO OUDALLE )
Ensuite en cliquant sur VALIDER j'aimerais que tout s'affiche sur le document dans les cellules suivantes .
Immatriculation ( Textbox5 , colonne G de ma base de donnée ) , dans les cellules AB47 ( fusionnée ) , BC53
Transporteur ( Textbox8 , colonne H de ma base de donnée ) , dans les cellules BC17 , FG16 , CD51
Seals Number ( Textbox7 , colonne I de ma base de donnée ) , dans les cellules CD47 , et la suite en C48 si case trop petite
Quantité ( Textbox6 , colonne J de ma base de donnée ) , dans les cellules C28 , F28 , G28 , G44 ,
J'ai un problème dans mon codage COMBOBOX1 ( débogage )
Option Explicit
Dim fa As Worksheet, fb As Worksheet
Dim ln&, i&, adr$
Private Sub ComboBox1_Change()
'(tout découle de ce combobox1)
ln = ComboBox1.ListIndex + 3
TextBox1 = fa.Range("D" & ln)
'Textbox1 est référence Huntsman
TextBox5 = fa.Range("G" & ln)
'Textbox5 est l'immatriculation remorque/chassis
TextBox6 = fa.Range("J" & ln)
'Textbox6 est le poids chargé
TextBox7 = fa.Range("I" & ln)
'Textbox7 est numéro de plombs remorque
TextBox8 = fa.Range("H" & ln)
'Textbox8 est le transporteur
End Sub
Private Sub CommandButton1_Click()
'Dim Dl As Integer
'If ActiveSheet.Name = "ZDGN HSO OUDALLE" Then 'Or ActiveSheet.Name = ""
fb.Range("H3") = ComboBox1
For i = 1 To 6
If Controls("TextBox" & i).Value = "" Then
If MsgBox("Toutes les informations ne sont pas saisies , voulez vous continuez ?", vbYesNo) = vbYes Then
Else
Exit Sub
End If
End If
adr = Choose(i, "H5", "E8", "G8", "H8", "B53", "H24")
fb.Range(adr) = Controls("Textbox" & i)
Next i
Unload Me
Worksheets("ZDGN HSO OUDALLE").PrintPreview
End Sub
Private Sub UserForm_initialize()
Set fa = Sheets("HSO OUDALLE")
Set fb = Sheets("ZDGN HSO OUDALLE")
ComboBox1.List = fa.Range("E3:E" & fa.Range("E" & Rows.Count).End(xlUp)(2).Row).Value
End Sub
Je bloque , si je peux avoir un petit coup de main sur ce sujet ! Merci énormément .
Bonjour Atomiik Loic,
« Onglet ZDGN HSO OUDALLE » : quel nom d'onglet bizarre !
désolé, mis à part que tu m'as donné la dalle, j'ai que dalle à proposer !
prends alors ce post pour un 2ème petit up en ta faveur !
qui peut répondre à mon copain Loic, please ?
dhany
- Messages
- 4'199
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
Bonsoir,
Une proposition avec un code simplifié via l'utilisation de noms parlants et identiques pour vos TextBoxes et plages de cellules.
Exemple : Immatriculation,
1- nom donné à TextBox5
==> Immatriculation
2- nom donné à la colonne G pour la feuille "HSO OUDALLE"
==> Immatriculation (='HSO OUDALLE'!$G:$G)
3- nom donné aux cellules AB47 et BC47 pour la feuille "BL HSO OUDALLE"
==> Immatriculation (='ZDGN HSO OUDALLE'!$A$47:$B$47;'ZDGN HSO OUDALLE'!$B$53:$C$53)
Afin pour identifier les TextBoxes relatives à votre base "HSO OUDALLE", ajout du Tag "HSO" dans celles concernées.
NB : "Seals Number ( Textbox7 , colonne I de ma base de donnée ) , dans les cellules CD47 , et la suite en C48 si case trop petite "
Je n'ai pas traité le cas de la cellule C48 qui alourdirait le code, il doit y avoir un moyen plus simple par exemple fusionner C47 et C48, plutôt que C47 et D47.