Visual Basic : Afficher plusieurs factures pour une seule immat [Résolu]

Signaler
Messages postés
58
Date d'inscription
jeudi 5 juin 2014
Statut
Membre
Dernière intervention
2 juillet 2014
-
Messages postés
28939
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 juillet 2020
-
Bonjour,

Suite à la création d'une application pour le suivi des véhicules de fonction de mon entreprise je voudrais créer un UserForm destiné aux Factures de chaques véhicules.

Dans un tableau Excel j'ai saisi sur chaque ligne :
Numéro de facture / Immatriculation / Date de la facture / Nature de l'intervention / Kilométrage / Montant / Remarques

Je voudrais que mon UserForm en recherchant la plaque d'immatriculation ressorte toutes les factures correspondant à ce véhicule.

Comment dois-je faire?

Merci à vous !

8 réponses

Messages postés
28939
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 juillet 2020
332
Bonjour,

Là encore il va te falloir utiliser la méthode FIND.
(si tu regardes ton aide Excel sur ce mot.. tu y trouveras des exemples.).

Mais au cas où , voici une fonction FIndAll qui te permettra de rechercher TOUTES les factures d'une même immatriculation.
(A adapter à tes besoins bien entendu).

Function FindAll(ByVal sText As String, ByRef oSht As Worksheet, ByRef sRange As String, ByRef arMatches() As String) As Boolean
' --------------------------------------------------------------------------------------------------------------
' FindAll - To find all instances of the1 given string and return the row numbers.
' If there are not any matches the function will return false
' --------------------------------------------------------------------------------------------------------------
On Error GoTo Err_Trap
Dim rFnd As Range ' Range Object
Dim iArr As Integer ' Counter for Array
Dim rFirstAddress ' Address of the First Find
' -----------------
' Clear the Array
' -----------------
Erase arMatches
Set rFnd = oSht.Range(sRange).Find(what:=sText, LookIn:=xlValues, lookAt:=xlPart)

If Not rFnd Is Nothing Then
rFirstAddress = rFnd.Address
Do Until rFnd Is Nothing
iArr = iArr + 1
ReDim Preserve arMatches(iArr)
arMatches(iArr) = rFnd.Row 'rFnd.Address pour adresse complete ' rFnd.Row Pour N° de ligne
Set rFnd = oSht.Range(sRange).FindNext(rFnd)
If rFnd.Address = rFirstAddress Then Exit Do ' Do not allow wrapped search
Loop
FindAll = True
Else
' ----------------------
' No Value is Found
' ----------------------
FindAll = False
End If
' -----------------------
' Error Handling
' -----------------------
Err_Trap:
If Err <> 0 Then
MsgBox Err.Number & " " & Err.Description, vbInformation, "Find All"
Err.Clear
FindAll = False
Exit Function
End If
End Function



Et pour l'utiliser.. par exemple :

Sub Exemple_util_Findall()

Dim arTemp() As String 'variable tableau pour la fonction Findall
Dim ValCherchee as string
ValCherchee="test"
Dim Nom_Feuil as string
Nom_Feuil = "Feuil1"

'---------------------------------------------------------------
bFound = FindAll(ValCherchee, Sheets(Nom_Feuil), ma_plage, arTemp())
'---------------------------------------------------------------

If bFound = True Then
Debug.Print "Nb occurences : " & UBound(arTemp)
For X = 1 To UBound(arTemp)
debug.print arTemp(X)
Next
End If

End sub

http://jr.loucan.fr/e107_plugins/forum/forum_viewtopic.php?11
Messages postés
58
Date d'inscription
jeudi 5 juin 2014
Statut
Membre
Dernière intervention
2 juillet 2014

Merci beaucoup de votre aide qui jusqu'à présent a toujours payé !

Pour ce sujet je dois créer dans l'UserForm un textbox dans lequel sera affiché tous les éléments trouvés? ou c'est une zone liste ? Ou encore plusieurs TextBox à la suite ?

J'ai commencé à faire ces lignes :

Private Sub CommandButton5_Click()

Dim recherche As Boolean
recherche = cherchC("Factures", TextBox14.Value)

If recherche = True Then
MsgBox ("Un véhicule à été trouvé !")

Else
MsgBox ("Aucun résultat trouvé")
End If


End Sub
(pour retrouver l'immatriculation)

Sub TextBox15_Findall()

Dim arTemp() As String
Dim ValCherchee As String
ValCherchee = TextBox14
Dim Nom_Feuil As String
Nom_Feuil = "Factures"

'---------------------------------------------------------------
bFound = Findall(ValCherchee, Sheets(Nom_Feuil), ma_plage, arTemp())
'---------------------------------------------------------------

If bFound = True Then
Debug.Print "Nb occurences : " & UBound(arTemp)
For x = 1 To UBound(arTemp)
Debug.Print arTemp(x)
Next
End If

End Sub
(Pour retrouver les factures correspondantes
Messages postés
28939
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 juillet 2020
332
our ce sujet je dois créer dans l'UserForm un textbox dans lequel sera affiché tous les éléments trouvés? ou c'est une zone liste ? Ou encore plusieurs TextBox à la suite ?
Je pense que tu peux faire :

Une ListBox pour afficher la référence des différentes factures
http://silkyroad.developpez.com/VBA/ControlesUserForm/#LII-G

Puis des TextBox qui afficheront les informations de la facture sélectionnée dans ta liste.


Et donc, dans ton code.. à quel endroit tu va "alimenter" ta liste...?.. hé bien ça sera dans
Sub TextBox15_Findall()


dans la boucle for :
For x = 1 To UBound(arTemp)
   Debug.Print arTemp(x)

   ' ICI tu mets le code qui va alimenter ta liste.
 
   Next

Messages postés
58
Date d'inscription
jeudi 5 juin 2014
Statut
Membre
Dernière intervention
2 juillet 2014

J'ai adapté avec la ListBox et les TextBox

Sub ListBox1_Findall()

Dim arTemp() As String
Dim ValCherchee As String
ValCherchee = TextBox14
Dim Nom_Feuil As String
Nom_Feuil = "Factures"

'---------------------------------------------------------------
bFound = Findall(ValCherchee, Sheets(Nom_Feuil), ma_plage, arTemp())
'---------------------------------------------------------------

If bFound = True Then
Debug.Print "Nb occurences : " & UBound(arTemp)
For x = 1 To UBound(arTemp)
Debug.Print arTemp(x)

ConsulterFacture.TextBox15.Value = Sheets("Factures").Cells(vcLig, 1)
ConsulterFacture.TextBox16.Value = Sheets("Factures").Cells(vcLig, 2)
ConsulterFacture.TextBox17.Value = Sheets("Factures").Cells(vcLig, 3)
ConsulterFacture.TextBox18.Value = Sheets("Factures").Cells(vcLig, 4)
ConsulterFacture.TextBox19.Value = Sheets("Factures").Cells(vcLig, 5)
ConsulterFacture.TextBox20.Value = Sheets("Factures").Cells(vcLig, 6)
ConsulterFacture.TextBox21.Value = Sheets("Factures").Cells(vcLig, 7)

Next
End If

End Sub


Mais ca ne marche pas encore.

Je veux qu'en entrant l'immatriculation + click sur "rechercher" ça donne la liste des factures correspondantes au véhicule.

Et que ensuite une fois clique sur l'une des factures ça remplisse les champs des textbox correspondants
Messages postés
28939
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 juillet 2020
332
As tu testé l'exemple que je t'avais donné ???
Si tu l'avais fait... tu aurais compris que le Numéro de ligne correspondant à ta recherche se trouve dans le tableau arrTemp(x)

Regardes dans le VBE, dans la fenêtre d'execution, ce que t'affiche la ligne de code :
Debug.Print arTemp(x)

... cette ligne de code t'affiche les N° des différentes lignes qui contiennent un résultat pour ta recherche...
Messages postés
28939
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 juillet 2020
332
De plus dans ton code... je ne vois rien concernant les ListBox...

Voila ce que tu pourrais faire par exemple :

Imaginons que je prenne comme données :


Et ma Userfor (avec ListBox + TextBox ) ressemble à ça :



Le code utilisé pour le faire est :


Private Sub bouton_FindAll_Click()

Dim arTemp() As String 'variable tableau pour la fonction Findall

Dim ValCherchee As String
ValCherchee = Me.T_immat.Value

Dim Nom_Feuil As String
Nom_Feuil = "Feuil1"

Dim ma_plage As String
    ma_plage = "A1:A1000"

'---------------------------------------------------------------
bFound = FindAll(ValCherchee, Sheets(Nom_Feuil), ma_plage, arTemp())
'---------------------------------------------------------------

'Initialisation de la ListBox
 ListBox1.ColumnCount = 3
 ListBox1.ColumnWidths = "20;40;80"

If bFound = True Then
Debug.Print "Nb occurences : " & UBound(arTemp)
For x = 1 To UBound(arTemp)
Debug.Print arTemp(x)
 '-------------------------
 'remplissage ListBox
 '-------------------------
    'première colonne
    Me.ListBox1.AddItem (arTemp(x))
    'deuxième colonne
    ListBox1.List(ListBox1.ListCount - 1, 1) = Sheets(1).Cells(arTemp(x), 1).Value
    'troisième colonne
    ListBox1.List(ListBox1.ListCount - 1, 2) = Sheets(1).Cells(arTemp(x), 2).Value

Next
End If



End Sub

Private Sub ListBox1_Click()
'Lors du click dans ma liste :
'Remplissage des TextBox :
ligneSelect = ListBox1.ListIndex
 valeur_colonne1 = ListBox1.List(ligneSelect, 0)
 valeur_Colonne2 = ListBox1.List(ligneSelect, 1)
 valeur_Colonne3 = ListBox1.List(ligneSelect, 2)

Me.T_immat_detail.Value = valeur_Colonne2
Me.T_nom_detail.Value = valeur_Colonne3

End Sub



Bien sûr... ça n'est qu'un exemple... à toi de l'adapter à tes besoins.


Messages postés
58
Date d'inscription
jeudi 5 juin 2014
Statut
Membre
Dernière intervention
2 juillet 2014

Je ne dois pas avoir tout saisi dans les lignes ^^

J'ai adapté comme ca :



Private Sub CommandButton5_FindAll_Click()

Dim arTemp() As String 'variable tableau pour la fonction Findall

Dim ValCherchee As String
ValCherchee = Me.TextBox14.Value

Dim Nom_Feuil As String
Nom_Feuil = "Factures"

Dim ma_plage As String
ma_plage = "B1:B1000"

'---------------------------------------------------------------
bFound = Findall(ValCherchee, Sheets(Nom_Feuil), ma_plage, arTemp())
'---------------------------------------------------------------

'Initialisation de la ListBox
ListBox1.ColumnCount = 3
ListBox1.ColumnWidths = "20;40;80"

If bFound = True Then
Debug.Print "Nb occurences : " & UBound(arTemp)
For x = 1 To UBound(arTemp)
Debug.Print arTemp(x)
'-------------------------
'remplissage ListBox
'-------------------------
'première colonne
Me.ListBox1.AddItem (arTemp(x))
'deuxième colonne
ListBox1.List(ListBox1.ListCount - 1, 1) = Sheets(1).Cells(arTemp(x), 1).Value
'troisième colonne
ListBox1.List(ListBox1.ListCount - 1, 2) = Sheets(1).Cells(arTemp(x), 2).Value
ListBox1.List(ListBox1.ListCount - 1, 3) = Sheets(1).Cells(arTemp(x), 3).Value
ListBox1.List(ListBox1.ListCount - 1, 4) = Sheets(1).Cells(arTemp(x), 4).Value
ListBox1.List(ListBox1.ListCount - 1, 5) = Sheets(1).Cells(arTemp(x), 5).Value
ListBox1.List(ListBox1.ListCount - 1, 6) = Sheets(1).Cells(arTemp(x), 6).Value
ListBox1.List(ListBox1.ListCount - 1, 7) = Sheets(1).Cells(arTemp(x), 7).Value
Next
End If



End Sub

Private Sub ListBox1_Click()
'Lors tu click dans ma liste :
'Remplissage des TextBox :
ligneSelect = ListBox1.ListIndex
valeur_colonne1 = ListBox1.List(ligneSelect, 0)
valeur_Colonne2 = ListBox1.List(ligneSelect, 1)
valeur_Colonne3 = ListBox1.List(ligneSelect, 2)
valeur_Colonne4 = ListBox1.List(ligneSelect, 3)
valeur_Colonne5 = ListBox1.List(ligneSelect, 4)
valeur_Colonne6 = ListBox1.List(ligneSelect, 5)
valeur_Colonne7 = ListBox1.List(ligneSelect, 6)

Me.T_immat_detail.Value = valeur_Colonne2
Me.T_nom_detail.Value = valeur_Colonne3

End Sub



La valeur recherchée est bien "Me.TextBox14.value" ?
De plus, les immatriculations dans la feuille excel sont en colonne B j'ai donc remplacé

Je ne comprend pas la partie arTemp(x) ?
Idem pour "ColumnCount et ColumnWidths"


Merci de votre aide
Messages postés
144
Date d'inscription
dimanche 24 avril 2011
Statut
Membre
Dernière intervention
16 juin 2016

bonjour,

tu es sur un prog VBS ou sur excel ?
Messages postés
58
Date d'inscription
jeudi 5 juin 2014
Statut
Membre
Dernière intervention
2 juillet 2014

Excel ! :-)
Messages postés
28939
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 juillet 2020
332
Galaxy : Elle travaille en VBA (excel).


Sandra :

' Nombre de colonne de la listBox
 ListBox1.ColumnCount = 3

'Largeur des colonnes dans la listbox
 ListBox1.ColumnWidths = "20;40;80"


Toi... au total tu as 7 colonnes (autant que de colonnes à traiter dans ton fichier excel)
+1 si, comme moi.. tu veux ajouter le N° de ligne où se trouve l'information.

=> Soit...8 Colonnes au total !


Je ne comprend pas la partie arTemp(x) ?

arTemp est une variable "tableau" .. un ARRAY.

Ce tableau contient la liste de tous les numéros de lignes où le programme a trouvé une immatriculation identique à ta recherche !

Messages postés
58
Date d'inscription
jeudi 5 juin 2014
Statut
Membre
Dernière intervention
2 juillet 2014

D'accord ça j'ai compris maintenant.

Pour
Me.T_immat_detail.Value = valeur_Colonne2
Me.T_nom_detail.Value = valeur_Colonne3

Cela correspond à quoi ?
Messages postés
28939
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 juillet 2020
332
J'ai nommé mes textbox (celles qui sont en bas dans mon exemple).
Donc toi...
c'est tes textbox 1 à 7

Me.Textbox1.Value = valeur_Colonne2
Me.Textbox2.Value = valeur_Colonne3
Me.Textbox3.Value = valeur_Colonne3
Me.Textbox4.Value = valeur_Colonne4
' ...etc...

Messages postés
58
Date d'inscription
jeudi 5 juin 2014
Statut
Membre
Dernière intervention
2 juillet 2014

Private Sub CommandButton5_FindAll_Click()

Dim arTemp() As String 'variable tableau pour la fonction Findall

Dim ValCherchee As String
ValCherchee = Me.TextBox14.Value

Dim Nom_Feuil As String
Nom_Feuil = "Factures"

Dim ma_plage As String
ma_plage = "B1:B1000"

'---------------------------------------------------------------
bFound = Findall(ValCherchee, Sheets(Nom_Feuil), ma_plage, arTemp())
'---------------------------------------------------------------

'Initialisation de la ListBox
ListBox1.ColumnCount = 8
ListBox1.ColumnWidths = "20;40;80"

If bFound = True Then
Debug.Print "Nb occurences : " & UBound(arTemp)
For x = 1 To UBound(arTemp)
Debug.Print arTemp(x)
'-------------------------
'remplissage ListBox
'-------------------------
'première colonne
Me.ListBox1.AddItem (arTemp(x))
'deuxième colonne
ListBox1.List(ListBox1.ListCount - 1, 1) = Sheets(1).Cells(arTemp(x), 1).Value
'troisième colonne
ListBox1.List(ListBox1.ListCount - 1, 2) = Sheets(1).Cells(arTemp(x), 2).Value
ListBox1.List(ListBox1.ListCount - 1, 3) = Sheets(1).Cells(arTemp(x), 3).Value
ListBox1.List(ListBox1.ListCount - 1, 4) = Sheets(1).Cells(arTemp(x), 4).Value
ListBox1.List(ListBox1.ListCount - 1, 5) = Sheets(1).Cells(arTemp(x), 5).Value
ListBox1.List(ListBox1.ListCount - 1, 6) = Sheets(1).Cells(arTemp(x), 6).Value
ListBox1.List(ListBox1.ListCount - 1, 7) = Sheets(1).Cells(arTemp(x), 7).Value
Next
End If



End Sub

Private Sub ListBox1_Click()
'Lors tu click dans ma liste :
'Remplissage des TextBox :
ligneSelect = ListBox1.ListIndex
valeur_colonne1 = ListBox1.List(ligneSelect, 0)
valeur_Colonne2 = ListBox1.List(ligneSelect, 1)
valeur_Colonne3 = ListBox1.List(ligneSelect, 2)
valeur_Colonne4 = ListBox1.List(ligneSelect, 3)
valeur_Colonne5 = ListBox1.List(ligneSelect, 4)
valeur_Colonne6 = ListBox1.List(ligneSelect, 5)
valeur_Colonne7 = ListBox1.List(ligneSelect, 6)

Me.TextBox15.Value = valeur_Colonne2
Me.TextBox16.Value = valeur_Colonne3
Me.TextBox17.Value = valeur_Colonne4
Me.TextBox18.Value = valeur_Colonne5
Me.TextBox19.Value = valeur_Colonne6
Me.TextBox20.Value = valeur_Colonne7
Me.TextBox21.Value = valeur_Colonne8



End Sub


Voila ce que j'ai écris.
Lorsque que je clique sur mon bouton rechercher (CommandButton5) rien ne se passe..
Messages postés
28939
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 juillet 2020
332
ListBox1.ColumnWidths = "20;40;80"

Tu as 8 colonnes... il te faut donc définir 8 largeur....

Lorsque que je clique sur mon bouton rechercher (CommandButton5) rien ne se passe.
Mets un POINT d'ARRET sur la ligne :
bFound = Findall(ValCherchee, Sheets(Nom_Feuil), ma_plage, arTemp())

Puis execute le programme en mode PAS à PAS...
et regardes la valeur de tes différentes variables.....
Messages postés
58
Date d'inscription
jeudi 5 juin 2014
Statut
Membre
Dernière intervention
2 juillet 2014

Je ne comprends pas .. ^^

A quoi correspondent les largeurs?
Messages postés
28939
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 juillet 2020
332
Dans la listbox..... tu as des colonnes....
Ces colonnes.. tu peux leur donner des dimensions ( la largeur).
Donc.. pour chaque colonne de ta listbox il faut que tu mette une colonne "adaptée"' aux informations qu'elles vont contenir).
Par exemple... pour une immatriculation ( d'une dizaine de caractères au max.) tu ne vas mettre une largeur de 300 ... tu n'as qu'a modifier la largeur de chacune des colonnes via le code
ListBox1.ColumnWidths = "20;40;80;40;40;40;40;40"
Messages postés
58
Date d'inscription
jeudi 5 juin 2014
Statut
Membre
Dernière intervention
2 juillet 2014

J'ai compris pour les dimensions des colonnes ! :-)

Maintenant pour la recherche d'immatriculation lorsque je clique sur "rechercher" rien ne se passe encore une fois. Je ne vois pas d'ou vient l'erreur car quand je clique dessus aucun message n'apparaît..

Private Sub CommandButton5_FindAll_Click()

Dim arTemp() As String 'variable tableau pour la fonction Findall

Dim ValCherchee As String
ValCherchee = ConsulterFacture.TextBox14.Value

Dim Nom_Feuil As String
Nom_Feuil = "Factures"

Dim ma_plage As String
ma_plage = "B1:B1000"

'---------------------------------------------------------------
bFound = Findall(ValCherchee, Sheets(Nom_Feuil), ma_plage, arTemp())
'---------------------------------------------------------------

'Initialisation de la ListBox
ListBox1.ColumnCount = 8
ListBox1.ColumnWidths = "20;20;10;100;20;10;100"

If bFound = True Then
Debug.Print "Nb occurences : " & UBound(arTemp)
For x = 1 To UBound(arTemp)
Debug.Print arTemp(x)
'-------------------------
'remplissage ListBox
'-------------------------
'première colonne
ConsulterFacture.ListBox1.AddItem (arTemp(x))
'deuxième colonne
ListBox1.List(ListBox1.ListCount - 1, 1) = Sheets("Factures").Cells(arTemp(x), 1).Value
'troisième colonne
ListBox1.List(ListBox1.ListCount - 1, 2) = Sheets("Factures").Cells(arTemp(x), 2).Value
ListBox1.List(ListBox1.ListCount - 1, 3) = Sheets("Factures").Cells(arTemp(x), 3).Value
ListBox1.List(ListBox1.ListCount - 1, 4) = Sheets("Factures").Cells(arTemp(x), 4).Value
ListBox1.List(ListBox1.ListCount - 1, 5) = Sheets("Factures").Cells(arTemp(x), 5).Value
ListBox1.List(ListBox1.ListCount - 1, 6) = Sheets("Factures").Cells(arTemp(x), 6).Value
ListBox1.List(ListBox1.ListCount - 1, 7) = Sheets("Factures").Cells(arTemp(x), 7).Value
Next
End If



End Sub



Ensuite j'ai adapté le remplissage de mes textbox de cette manière (lorsque la premiere partie fonctionnera biensure) :

Private Sub ListBox1_Click()
'Lors tu click dans ma liste :
'Remplissage des TextBox :
ligneSelect = ListBox1.ListIndex
valeur_colonne1 = ListBox1.List(ligneSelect, 0)
valeur_Colonne2 = ListBox1.List(ligneSelect, 1)
valeur_Colonne3 = ListBox1.List(ligneSelect, 2)
valeur_Colonne4 = ListBox1.List(ligneSelect, 3)
valeur_Colonne5 = ListBox1.List(ligneSelect, 4)
valeur_Colonne6 = ListBox1.List(ligneSelect, 5)
valeur_Colonne7 = ListBox1.List(ligneSelect, 6)

ConsulterFacture.TextBox15.Value = valeur_Colonne2
ConsulterFacture.TextBox16.Value = valeur_Colonne3
ConsulterFacture.TextBox17.Value = valeur_Colonne4
ConsulterFacture.TextBox18.Value = valeur_Colonne5
ConsulterFacture.TextBox19.Value = valeur_Colonne6
ConsulterFacture.TextBox20.Value = valeur_Colonne7
ConsulterFacture.TextBox21.Value = valeur_Colonne8



End Sub
Messages postés
28939
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 juillet 2020
332
Bon... on va faire autrement....
On va ajouter des Msgbox....

commence par ça :

Private Sub CommandButton5_FindAll_Click()

Dim arTemp() As String 'variable tableau pour la fonction Findall

Dim ValCherchee As String
ValCherchee = ConsulterFacture.TextBox14.Value

Dim Nom_Feuil As String
Nom_Feuil = "Factures"

Dim ma_plage As String
    ma_plage = "B1:B1000"

msgbox "valcherchee = " & ValCherchee
'---------------------------------------------------------------
bFound = Findall(ValCherchee, Sheets(Nom_Feuil), ma_plage, arTemp())
'---------------------------------------------------------------
msgbox "bfound = " & bFound
'Initialisation de la ListBox
 ListBox1.ColumnCount = 8
 ListBox1.ColumnWidths = "20;20;10;100;20;10;100"

If bFound = True Then
msgbox "Nb occurences : " & UBound(arTemp)
For x = 1 To UBound(arTemp)
Debug.Print arTemp(x)
 '-------------------------
 'remplissage ListBox
 '-------------------------
    'première colonne
    ConsulterFacture.ListBox1.AddItem (arTemp(x))
    'deuxième colonne
    ListBox1.List(ListBox1.ListCount - 1, 1) = Sheets("Factures").Cells(arTemp(x), 1).Value
    'troisième colonne
    ListBox1.List(ListBox1.ListCount - 1, 2) = Sheets("Factures").Cells(arTemp(x), 2).Value
    ListBox1.List(ListBox1.ListCount - 1, 3) = Sheets("Factures").Cells(arTemp(x), 3).Value
    ListBox1.List(ListBox1.ListCount - 1, 4) = Sheets("Factures").Cells(arTemp(x), 4).Value
    ListBox1.List(ListBox1.ListCount - 1, 5) = Sheets("Factures").Cells(arTemp(x), 5).Value
    ListBox1.List(ListBox1.ListCount - 1, 6) = Sheets("Factures").Cells(arTemp(x), 6).Value
    ListBox1.List(ListBox1.ListCount - 1, 7) = Sheets("Factures").Cells(arTemp(x), 7).Value
Next
End If



End Sub
Messages postés
58
Date d'inscription
jeudi 5 juin 2014
Statut
Membre
Dernière intervention
2 juillet 2014

Rien ne se passe même avec les msgbox ... Aucun message n'apparaît ..
Messages postés
28939
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 juillet 2020
332
Et bien... cliques tu sur le bon bouton ?????
Messages postés
58
Date d'inscription
jeudi 5 juin 2014
Statut
Membre
Dernière intervention
2 juillet 2014

J'ai vérifié le bon bouton est bien CommandButton5 ..
Messages postés
58
Date d'inscription
jeudi 5 juin 2014
Statut
Membre
Dernière intervention
2 juillet 2014

Et le TextBox est bien TextBox14
Messages postés
28939
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 juillet 2020
332
Pour info...


Point d'arrêt :


On passe la souris sur une variable pour voir sa valeur :

et si on passe à l'instruction suivante :



On peut aussi utiliser l'instruction Debug.print
=> L'info apparaitra dans la fenêtre d'exécution..

Messages postés
58
Date d'inscription
jeudi 5 juin 2014
Statut
Membre
Dernière intervention
2 juillet 2014

Problème sur mon fichier :

Les lignes ne sont pas surlignées en jaune fluo .. et cela même sur les UserForm qui marchent deja ..

Est-ce lié ?
Messages postés
28939
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 juillet 2020
332
Comme je te l'ai dit... tu n'entres pas dans le code de ton bouton....
=> Tu as bien mis un point d'arrêt dedans ?
Messages postés
28939
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 juillet 2020
332
J'ai vérifié le bon bouton est bien CommandButton5 ..

Tu peux, dans ta USERFORM, double cliquer sur le bouton en question ?
Arrives tu bien sur le code que tu nous montres ???
Messages postés
58
Date d'inscription
jeudi 5 juin 2014
Statut
Membre
Dernière intervention
2 juillet 2014

Merci beaucoup !

Quand je parle des valeurs négatives je parle de ces lignes :

ListBox1.List(ListBox1.ListCount - 1, 1) = Sheets("Factures").Cells(arTemp(x), 1).Value

ListBox1.List(ListBox1.ListCount - 1, 2) = Sheets("Factures").Cells(arTemp(x), 2).Value
ListBox1.List(ListBox1.ListCount - 1, 3) = Sheets("Factures").Cells(arTemp(x), 3).Value
ListBox1.List(ListBox1.ListCount - 1, 4) = Sheets("Factures").Cells(arTemp(x), 4).Value
ListBox1.List(ListBox1.ListCount - 1, 5) = Sheets("Factures").Cells(arTemp(x), 5).Value
ListBox1.List(ListBox1.ListCount - 1, 6) = Sheets("Factures").Cells(arTemp(x), 6).Value
ListBox1.List(ListBox1.ListCount - 1, 7) = Sheets("Factures").Cells(arTemp(x), 7).Value
Messages postés
58
Date d'inscription
jeudi 5 juin 2014
Statut
Membre
Dernière intervention
2 juillet 2014

A quoi correspond le -1 ?
Messages postés
28939
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 juillet 2020
332
Ben .... à une soustraction..... de 1.

A ton avis ... que peut donner l'instruction : ListBox1.ListCount ??
Messages postés
58
Date d'inscription
jeudi 5 juin 2014
Statut
Membre
Dernière intervention
2 juillet 2014

Il représente un TextBox ? mais je ne comprend pas pourquoi les chiffres -1,2

(ListBox1.ListCount - 1, 2) = Sheets("Factures").Cells(arTemp(x), 2).Value
Messages postés
28939
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 juillet 2020
332
block>Il représente un TextBox</block>
.... ben non.... comme son nom l'indique... c'est une LISTBOX.
Tu as regardé le lien que je t'ai donné ???

Et donc ListCount .... tu n'arrive pas à voir une similitude avec des mots anglais ? => Liste Count ... qui en français pourrait se traduire par Liste Compter ... bref ... le Nombre d'éléments dans la LISTE...