Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Probléme initialisation userform

GUYANAIS

XLDnaute Occasionnel
Bonjour,
Je n'arrive pas à charger mon "userform1" avec les informations souhaitées dans les "textbox" correspondantes. Dans mon formulaire je dois rapporter des valeurs qui proviennent de différentes feuilles Factures et Result. Pour ouvrir le formulaire je clique sur la cellule A9 de la feuille Result.
Je dois avoir un problème dans le code ci-dessous. Je vous joins le fichier en pièce jointe. Merci d'avance de votre aide.
Code:
Private Sub UserForm1_Initialize()

    TextBox1 = Date
    TextBox2 = Sheets(8).Range("G2").Text 'Sheets (8) feuille dans l'ordre de mon classeur
    TextBox3.Value = Sheets(2).Range("S6").Value 'Sheets (2) feuille dans l'ordre de mon classeur
    TextBox4.Value = Sheets(2).Range("S7").Value
    Label18.Caption = ListView1.ListItems.Count 'On affiche le Nb enregistrement
With ListView1
        .Gridlines = True 'affiche les lignes
        .View = lvwReport 'style de rapport
        .FullRowSelect = True 'permet de selectionner une ligne dans la liste
       
        'Nomme lmes entêtes et défini les largeurs
        .ColumnHeaders.Add Text:="Noms", Width:=80
        .ColumnHeaders.Add Text:="Prénom", Width:=80
        .ColumnHeaders.Add Text:="Grade", Width:=50
        .ColumnHeaders.Add Text:="Libellé unité", Width:=100
        .ColumnHeaders.Add Text:="PCE", Width:=70
        .ColumnHeaders.Add Text:="Libellé rubrique", Width:=100
        .ColumnHeaders.Add Text:="Montant", Width:=70
        '************
End With

Call Actualisation 'on appelle la procédure de remplissage du listview
End Sub

Private Sub Actualisation()
' déclaration des variables
Dim Item As ListItem
Dim DerniereLigne As Integer
Dim i As Integer
Dim Ws As Worksheet

Set Ws = ThisWorkbook.Sheets("Result")
DerniereLigne = Ws.Cells(Rows.Count, 2).End(xlUp).Row 'On cherche la derniére ligne du tableau de la feuil19 de la colonne 2

With Me.ListView1
    .ListItems.Clear 'on vide à chaque rechargement
    'on boucle toutes les lignes et on charge les informations
    For i = 9 To DerniereLigne
        'On affiche dans la ListView le contenu des données
        .ListItems.Add , , Feuil19.Cells(i, 3)
        .ListItems(.ListItems.Count).ListSubItems.Add , , Feuil19.Cells(i, 4)
        .ListItems(.ListItems.Count).ListSubItems.Add , , Feuil19.Cells(i, 5)
        .ListItems(.ListItems.Count).ListSubItems.Add , , Feuil19.Cells(i, 9)
        .ListItems(.ListItems.Count).ListSubItems.Add , , Feuil19.Cells(i, 11)
        .ListItems(.ListItems.Count).ListSubItems.Add , , Feuil19.Cells(i, 13)
        .ListItems(.ListItems.Count).ListSubItems.Add , , Format(Feuil19.Cells(i, 15), "# ##0 €")
       
    Next i
    Me.Label18.Caption = .ListItems.Count 'On affiche le Nb enregistrement
End With
End Sub

Private Sub CommandButton1_Click()
Unload Me
End Sub


Private Sub CommandButton2_Click()

Dim Tbl() As Variant
Dim Derlig As Long, Derlig2 As Long
Dim Ws As Worksheet, Ws1 As Worksheet

Application.ScreenUpdating = False
'Control de saisie
If Me.TextBox6 = "" Then MsgBox "Veuillez renseigner ce champ !", vbCritical: Me.TextBox6.SetFocus: Exit Sub
If Me.TextBox2 = "" Then MsgBox "Veuillez renseigner le type d'enregistrement !", vbCritical: Me.TextBox2.SetFocus: Exit Sub
If Me.TextBox5 = "" Then MsgBox "Veuillez saisir un Numero d'enregsitrement !", vbCritical: Me.TextBox5.SetFocus: Exit Sub
If Not IsDate(Me.TextBox1) Then MsgBox "Veuillez saisir une date d'enregistrement !", vbCritical: Me.TextBox1.SetFocus: Exit Sub
If Me.TextBox3 = "" Then MsgBox "Veuillez saisir une date de début !", vbCritical: Me.TextBox3.SetFocus: Exit Sub
If Me.TextBox4 = "" Then MsgBox "Veuillez saisir une date de fin !", vbCritical: Me.TextBox4.SetFocus: Exit Sub
'************
Set Ws = ThisWorkbook.Sheets("Result")
Set Ws1 = ThisWorkbook.Sheets("BDD")
Derlig = Ws.Range("B65536").End(xlUp).Row
Derlig2 = Ws1.Range("E65536").End(xlUp).Row + 1
Tbl = Ws.Range("B9:O" & Derlig).Value
With Ws1
    .Range("G" & Derlig2).Resize(UBound(Tbl, 1), UBound(Tbl, 2)).FormulaLocal = Tbl
    .Range("A" & Derlig2 & ":A" & Derlig2 + UBound(Tbl, 1) - 1) = Me.TextBox1
    .Range("B" & Derlig2 & ":B" & Derlig2 + UBound(Tbl, 1) - 1) = Me.TextBox5
    .Range("C" & Derlig2 & ":C" & Derlig2 + UBound(Tbl, 1) - 1) = Me.TextBox6
    .Range("D" & Derlig2 & ":D" & Derlig2 + UBound(Tbl, 1) - 1) = Me.TextBox2
    .Range("E" & Derlig2 & ":E" & Derlig2 + UBound(Tbl, 1) - 1) = Me.TextBox3
    .Range("F" & Derlig2 & ":F" & Derlig2 + UBound(Tbl, 1) - 1) = Me.TextBox4
End With

Set Ws = Nothing
Set Ws1 = Nothing
Application.ScreenUpdating = True

MsgBox "L'enregistrement s'est bien déroulé !", vbInformation
Unload Me
Sheets("Fac_ETAT").Select
    Range("B3").Select
End Sub
 

Pièces jointes

  • Visuel_23_08_2017.xlsm
    172.8 KB · Affichages: 54

eriiic

XLDnaute Barbatruc
Bonjour,

Je n'arrive pas à charger mon "userform1" avec les informations souhaitées dans les "textbox" correspondantes.
Et si tu disais lesquelles sont les bonnes ?
VB:
TextBox2 = Sheets(8).Range("G2").Text 'Sheets (8) feuille dans l'ordre de mon classeur
pourquoi utiliser l'index (position) de la feuille et pas son nom ou son codename ?
Au moins tu seras sûr de la feuille utilisée.
eric
 

GUYANAIS

XLDnaute Occasionnel
Merci lolote83 et eriiic,
Effectivement c'est beaucoup mieux, par contre comment déclencher un "userform" dans une feuille et le rattacher à des données d'une autre feuille. Dans mon document j'ai un userform2 qui fait une recherche sur un des champ du tableau de la feuille "BDD". Quand j'appelle le "userform2" avec le bouton de la feuille "Factures_rappr" Le combobox Champ valeur ne se remplit pas de la donnée correspondante. il ne se remplit que si je place le bouton sur la feuille BDD
Je sais je suis pas trés doué cela doit avoir un rapport avec se que disait eriiic l'index (position).
merci
Code:
Private Sub UserForm2_Initialize()
'permet de selectionner un entete de colonne de la BDD pour faire une recherche ici de 1 à 8eme colonne
    For i = 1 To 8 '=> pour lister les entetes de colonne de la BDD
      ComboBox_Champ_valeur.AddItem Cells(1, i) 'Ajoute les valeurs
    Next

'Affiche les valeurs trouvés dans le resultat de la selection:
With ListView1
        .Gridlines = True 'affiche les lignes
        .View = Lvw.Report 'style de rapport
        .FullRowSelect = True 'Permet de seletionner une ligne dans la liste
      
        'nomme les entêtes et défini les largeurs
        ColumnHeaders.Add Text:="Date enregistrment ", Whidth:=40
        ColumnHeaders.Add Text:="Numéro facture ", Whidth:=40
        ColumnHeaders.Add Text:="Appelation facture ", Whidth:=40
        ColumnHeaders.Add Text:="Noms ", Whidth:=40
        ColumnHeaders.Add Text:="Code unité ", Whidth:=40
      
   Call Actualisation_usf2 'on apelle le remplissage
 
End With

End Sub
 
Dernière édition:

eriiic

XLDnaute Barbatruc
C'est un gag UserForm2 ?

Sheets(8) est la 8ème feuille. Il suffit que qq'un la déplace ou en insère ou supprime une et tu t'adresseras à une autre feuille.
Si c'est la feuille machin et utilise sheets("machin")

Et mieux encore, utilise des variables objets comme tu as fait plus bas :
Set Ws1 = ThisWorkbook.Sheets("BDD")
a=Ws1.[A1].value
eric
 

GUYANAIS

XLDnaute Occasionnel
Merci eriiiic,
Je découvre le code j'avance doucement mais surement.
Dans mon outil, sur le formulaire je veux apparaître dans le listview1 que les valeurs qui sont sélectionnées dans le ListBox_valeur_champ et sans doublons.
Aprés en cliquant sur la ligne correspondante je renvoie les informations vers un autre formulaire userform3 et j'y ajoute 5 informations avant de l'enregistrer en lieu et place des informations précédentes. Je viens d'ajouter le fichier avec les avancés du jour.
 

Pièces jointes

  • Visuel_24_08_2017.xlsm
    179 KB · Affichages: 28

eriiic

XLDnaute Barbatruc
Ok, tu te moques du monde quoi...
Tu démarres ici, 5h plus tard tu démarres un autre topic. Ca n'allait pas assez vite ? On n'était pas assez disponible pour toi ?
Et bien on est jamais aussi bien servi que par soi même, continue tout seul.
eric
 

GUYANAIS

XLDnaute Occasionnel
Eriiic, Jean-Marie,

Je suis désolé j'avais un autre topic d'ouvert que j'avais oublié. Je suis confus et je vous prie de bien vouloir accepter mes excuses.
J'ai eu du mal à comprendre tout le code mais je progresse doucement. Merci encore de votre aide qui m'a permis d'avancer.
Ci-joint l'état d'avancement de mon outil.
Christophe
 

Pièces jointes

  • Visuel_24_08_2017.xlsm
    179.6 KB · Affichages: 31
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…