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

XL 2016 erreur d'exécution

marc.gilliand

XLDnaute Occasionnel
Bonjour,
J'ai plusieurs userforms dans mon programme de suivi des débiteurs. Dans l'USF 5, je n'arrive pas à le charger.
Voici mon code :
Dim pièceactuelle As String

Private Sub CommandButton2_Click()

Dim Debid As String

Dim typepce As String
Dim datepmt As Date
Dim PDPID As String
Dim montant As Variant

Debid = Sheets("USF5").Cells(4, 2).Value
typepce = "Plan de paiement"
datepmt = Sheets("USF5").Cells(13, 2).Value
PDPID = Sheets("USF5").Cells(16, 2).Value
montant = Sheets("USF5").Cells(11, 2).Value

Sheets("Règlements").Cells(4, 2).Value = Debid
Sheets("Règlements").Cells(4, 4).Value = typepce
Sheets("Règlements").Cells(4, 6).Value = typepce
Sheets("Règlements").Cells(6, 4).Value = datepmt
Sheets("Règlements").Cells(6, 6).Value = datepmt
Sheets("Règlements").Cells(9, 4).Value = PDPID
Sheets("Règlements").Cells(9, 6).Value = PDPID
Sheets("Règlements").Cells(12, 6).Value = montant

mettreajourcredit

'rafraichir le tableau:

RefreshLstPmt

'rafraichissement listbox
Set bddfeuil1 = Sheet14.[A1].CurrentRegion

Me.ListBox1.ColumnCount = 8
Me.ListBox1.ColumnHeads = True

Set fplage = Sheet14.[A1].CurrentRegion.Offset(1)

Me.ListBox1.RowSource = fplage.Address(external:=True)



ListBox1.ColumnWidths = "40;80;25;65;70;70;70;5"

'retour acueil
Unload Me
UserForm1.Show

End Sub

Private Sub CommandButton3_Click()

With Application
.WindowState = xlMaximized


Zoom = Int(.Width / Me.Width * 100)
Width = .Width
Height = .Height
End With

With UserForm1
.Top = Application.Top
.Left = Application.Left
End With

End Sub

Private Sub Frame1_Click()

End Sub

Private Sub Frame3_Click()

End Sub

Private Sub OptionButton13_Click()
Unload Me
UserForm2.Show
End Sub

Private Sub OptionButton14_Click()
Unload Me
UserForm3.Show
End Sub

Private Sub OptionButton15_Click()
Unload Me
UserForm4.Show
End Sub

Private Sub OptionButton16_Click()
Unload Me
UserForm5.Show
End Sub

Private Sub OptionButton17_Click()
Unload Me
UserForm6.Show
End Sub

Private Sub OptionButton18_Click()
Unload Me
UserForm11.Show
End Sub

Private Sub OptionButton19_Click()
Unload Me
UserForm14.Show
End Sub

Private Sub OptionButton20_Click()
Unload Me
UserForm13.Show
End Sub

Private Sub OptionButton21_Click()

'Lien sur poursuite
Debid = Sheets("USF2").Range("B3").Value
Sheets("R1").Range("O12").Value = Debid
Unload Me
Sheets("R1").Unprotect ("bfbg")
Sheets("R1").Activate
End Sub

Private Sub OptionButton22_Click()

'Lien sur poursuite
Debid = Sheets("USF2").Range("B3").Value
Sheets("R2").Range("O12").Value = Debid
Unload Me
Sheets("R2").Unprotect ("bfbg")
Sheets("R2").Activate
End Sub

Private Sub OptionButton23_Click()

'Lien sur poursuite
Debid = Sheets("USF2").Range("B3").Value
Sheets("R3").Range("O12").Value = Debid
Unload Me
Sheets("R3").Unprotect ("bfbg")
Sheets("R3").Activate
End Sub

Private Sub OptionButton24_Click()

'Lien sur poursuite
Debid = Sheets("USF2").Range("B3").Value
Sheets("RPDP").Range("O12").Value = Debid
Unload Me
Sheets("RPDP").Unprotect ("bfbg")
Sheets("RPDP").Activate
End Sub

Private Sub OptionButton25_Click()
Unload Me
UserForm7.Show
End Sub

Private Sub OptionButton26_Click()
Unload Me
UserForm8.Show
End Sub

Private Sub OptionButton27_Click()
Unload Me
UserForm9.Show
End Sub

Private Sub OptionButton28_Click()
Unload Me
UserForm10.Show
End Sub

Private Sub OptionButton29_Click()
Unload Me
UserForm12.Show
End Sub

Private Sub OptionButton30_Click()
Unload Me
UserForm15.Show
End Sub


Private Sub TextBox19_Change()

Sheets("USF5").Cells(13, 2).Value = TextBox19.Value

End Sub

Private Sub TextBox21_Change()

Sheets("USF5").Cells(14, 2).Value = TextBox21.Value

End Sub

Private Sub TextBox23_Change()

Sheets("USF5").Cells(11, 2).Value = TextBox23.Value

End Sub

Private Sub TextBox41_Change()

If TextBox41.Value = vbNullString Then
ListBox1.List = Sheets("ListePaiements").Range("A1:K10000").Value

Else

FindText Sheets("ListePaiements").Range("A1:G10000"), TextBox41.Value, ListBox1

End If
End Sub

Private Sub UserForm_Initialize()
'taille USF
UserForm5.Height = 505
UserForm5.Width = 960

'Rafraicchissement données LB
RefreshLstPmt

'initialisation formulaire
Set bddfeuil1 = Sheet14.[A1].CurrentRegion

Me.ListBox1.ColumnCount = 8
Me.ListBox1.ColumnHeads = True

Set fplage = Sheet14.[A1].CurrentRegion.Offset(1)

Me.ListBox1.RowSource = fplage.Address(external:=True)



ListBox1.ColumnWidths = "40;80;25;65;70;70;70;5"

'initialisation pièce
Sheets("USF5").Cells(16, 2).Value = Sheets("USF0").Cells(1, 1).Value

'récupération données lignes
TextRow = ListBox1.ListIndex
strCol1 = ListBox1.List(TextRow, 3)
Sheets("USF5").Cells(16, 2).Value = strCol1

'Alimentation données utilisateur
TextBox40.Value = Sheets("USF5").Cells(3, 2).Value
TextBox14.Value = Sheets("USF5").Cells(4, 2).Value
TextBox20.Value = Sheets("USF5").Cells(5, 2).Value
TextBox22.Value = Sheets("USF5").Cells(6, 2).Value
TextBox24.Value = Sheets("USF5").Cells(7, 2).Value
TextBox26.Value = Sheets("USF5").Cells(8, 2).Value

'alimentation données pièce
TextBox17.Value = "Plan de paiement"
TextBox2.Value = Sheets("USF5").Cells(4, 2).Value
TextBox12.Value = Sheets("USF5").Cells(18, 2).Value
TextBox10.Value = Sheets("USF5").Cells(19, 2).Value
TextBox9.Value = Sheets("USF5").Cells(20, 2).Value
TextBox28.Value = Sheets("USF5").Cells(21, 2).Value
TextBox11.Value = Sheets("USF5").Cells(22, 2).Value
TextBox23.Value = Sheets("USF5").Cells(24, 2).Value
TextBox37.Value = Sheets("USF5").Cells(26, 2).Value

End Sub

Private Sub ListBox1_Change()
On Error Resume Next
Dim strCol1 As String
Dim TextRow As Long

'récupération données lignes
TextRow = ListBox1.ListIndex
strCol1 = ListBox1.List(TextRow, 3)
Sheets("USF5").Cells(16, 2).Value = strCol1

'Alimentation données utilisateur
TextBox40.Value = Sheets("USF5").Cells(3, 2).Value
TextBox14.Value = Sheets("USF5").Cells(4, 2).Value
TextBox20.Value = Sheets("USF5").Cells(5, 2).Value
TextBox22.Value = Sheets("USF5").Cells(6, 2).Value
TextBox24.Value = Sheets("USF5").Cells(7, 2).Value
TextBox26.Value = Sheets("USF5").Cells(8, 2).Value

'alimentation données pièce
TextBox17.Value = "Plan de paiement"
TextBox2.Value = Sheets("USF5").Cells(4, 2).Value
TextBox12.Value = Sheets("USF5").Cells(18, 2).Value
TextBox10.Value = Sheets("USF5").Cells(19, 2).Value
TextBox9.Value = Sheets("USF5").Cells(20, 2).Value
TextBox28.Value = Sheets("USF5").Cells(21, 2).Value
TextBox11.Value = Sheets("USF5").Cells(22, 2).Value
TextBox23.Value = Sheets("USF5").Cells(24, 2).Value
TextBox37.Value = Sheets("USF5").Cells(26, 2).Value

pièceactuelle = strCol1
Sheets("USF0").Cells(1, 1).Value = strCol1


End Sub

Public Sub FindText(SourceRng As Range, Text As String, List As MSForms.ListBox)

Dim RngToArr As Variant 'Variable for taking range to an array.
RngToArr = SourceRng.Value 'Convert range to array.

Dim i As Long 'For outer loop..Loop from 0 to (total row-1).
Dim j As Long 'For inner loop..Loop from 1 to total column.
Dim k As Long 'For taking data to list.
Dim L As Long 'For indexing in Listbox.
Dim IsIn As Boolean 'For exit option or Checking is the data in the row or not.

With List
.Clear
For i = 0 To UBound(RngToArr, 1) - 1 'UBound(RngToArr, 1) count how many row are there. let say m = UBound(RngToArr, 1)
'So the order will be m*n (row*col)
IsIn = False 'Initial value is false.
For j = 1 To UBound(RngToArr, 2) 'Run the inner loop.
If InStr(1, UCase(RngToArr(i + 1, j)), UCase(Text)) <> 0 Then 'Check if the search text is there or not.
IsIn = True 'If the data is present then set IsIn to true.
Exit For 'And no need to run the inner loop anymore.
End If
Next j

If IsIn = True Then
.ColumnCount = UBound(RngToArr, 2) 'Define the Column count to total column.
.AddItem 'Start adding item.
For k = 0 To UBound(RngToArr, 2) - 1
.List(L, k) = RngToArr(i + 1, k + 1) 'Run this for putting the value to the list.
Next k
L = L + 1 'Increase the index for listbox.
End If
Next i

End With

End Sub

Private Sub Trier1_Click()

Sortcolumn1

ListBox1.ColumnCount = 8

Set bddfeuil1 = Sheet14.[A1].CurrentRegion

Me.ListBox1.ColumnCount = 8
Me.ListBox1.ColumnHeads = True

Set fplage = Sheet14.[A1].CurrentRegion.Offset(1)

Me.ListBox1.RowSource = fplage.Address(external:=True)




ListBox1.ColumnWidths = "40;80;25;65;70;70;70;5"


End Sub

Private Sub Trier2_Click()

Sortcolumn2

ListBox1.ColumnCount = 8

Set bddfeuil1 = Sheet14.[A1].CurrentRegion

Me.ListBox1.ColumnCount = 8
Me.ListBox1.ColumnHeads = True

Set fplage = Sheet14.[A1].CurrentRegion.Offset(1)

Me.ListBox1.RowSource = fplage.Address(external:=True)




ListBox1.ColumnWidths = "40;80;25;65;70;70;70;5"


End Sub

Private Sub Trier3_Click()

Sortcolumn3

ListBox1.ColumnCount = 8

Set bddfeuil1 = Sheet14.[A1].CurrentRegion

Me.ListBox1.ColumnCount = 8
Me.ListBox1.ColumnHeads = True

Set fplage = Sheet14.[A1].CurrentRegion.Offset(1)

Me.ListBox1.RowSource = fplage.Address(external:=True)




ListBox1.ColumnWidths = "40;80;25;65;70;70;70;5"


End Sub

Private Sub Trier4_Click()

Sortcolumn4

ListBox1.ColumnCount = 8

Set bddfeuil1 = Sheet14.[A1].CurrentRegion

Me.ListBox1.ColumnCount = 8
Me.ListBox1.ColumnHeads = True

Set fplage = Sheet14.[A1].CurrentRegion.Offset(1)

Me.ListBox1.RowSource = fplage.Address(external:=True)




ListBox1.ColumnWidths = "40;80;25;65;70;70;70;5"


End Sub

Private Sub Trier8_Click()

Sortcolumn8

ListBox1.ColumnCount = 8

Set bddfeuil1 = Sheet14.[A1].CurrentRegion

Me.ListBox1.ColumnCount = 8
Me.ListBox1.ColumnHeads = True

Set fplage = Sheet14.[A1].CurrentRegion.Offset(1)

Me.ListBox1.RowSource = fplage.Address(external:=True)




ListBox1.ColumnWidths = "40;80;25;65;70;70;70;5"


End Sub

Et voici l'erreur remonté par Excel :



Merci de votre aide.
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Re,

Usf5, macro initialize, j'ai désactivé les deux lignes citées plus haut
pour les parties de code non rattachées à une sub et autres problèmes, je n'ai pas noté mais il suffit de faire des compilations dans votre fichier originel pour les retrouver.

Bien cordialement, @+
 

marc.gilliand

XLDnaute Occasionnel
merci, en fait pouvez-vous me dire dans quel UF's avez fait des modifications et quelles mdifications ? Cela m'aiderait beaucoup à y comprendre un peu mieu. Merci de votre travail.
Encore une question, selon
voila ! j'ai fait un Xlsb, l'original en Xlsm ne passait pas chez moi, même compressé, tu as juste à le ré enregistrer en Xlsm

Bonne journée
désolé, mais j'ai toujours un bug sur l'UF 3
 

job75

XLDnaute Barbatruc
J'ai indiqué aux posts #11 et #33 ce qui provoque les bugs sur UserForm3 et suivants ainsi que sur UserForm5.

Bien sûr on les évite en mettant en commentaire les lignes fautives.

Mais c'est du bricolage, il faut modifier ou remplacer ces lignes par ce qui convient.

Et là c'est vous qui pouvez le faire car nous nous ne savons pas ce que vous voulez obtenir.
 

marc.gilliand

XLDnaute Occasionnel
encore merci à tous pour votre aide. Tout à l'air nickel chrome. Merci.
J'ai encore quelques questions :
Q1 : lorsque j'appelle l'UF1 et que je sélectionne une ligne à traiter, celle-ci se met en bleu. Comment faire dès lors pour que lorsque je choisis une fonction, par exemple Saisie d'un acompte (qui ouvre un nouveau visuel), la ligne sélectionnée reste en bleu et vienne se placer en première position dans la liste box ?
Q2 : lorsque je saisis un chiffre 12.36, il me remonte dans la listeBox1 12,36 me garde ce format 12.36 dans le "Suivi des paiements", lorsque je reprends cette pièce comptable Xl me met 12,36 et me plante le programme. Avez-vous une suggestion ?
Q3 : dans le visuel de la ListBox, j'ai un petit rectangle que je voudrais utiliser pour chercher n'importe quelle valeur dans cette LisBox. Et là, encore une fois plantage intgégral.

Merci de votre aide.
 
Dernière édition:

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Bonjour marc.gilliand, le forum

pour que votre ligne soit présélectionnée, il faut, si vos données sont identiques, enregistrer la sélection sur le précédent userform et sélectionner l'Item dans la listbox du nouveau lors de l'initialisation après l'avoir alimenté.
Mais ou est l'utilité de garder une listbox copie de la précédente alors que vous n'agissez de toute façon que sur un seul item ?
Vous devriez séparer vos fonctions, un usf pour la recherche, et des usf dédiés pour vos sous programmes.

Je pense également qu'un petit tour par la Charte XLD ne serait pas de trop pour connaître les règles de ce forum.
En voici deux extraits :
1.3 – Lorsqu’on rentre sur un fil, comme dans la vie de tous les jours, on est poli en disant « Bonjour ».
2.3 – Le titre de la question doit être clair et comporter explicitement le sujet de la demande. Cela sous-entend qu’une nouvelle demande fait l’objet d’un nouveau fil.

Bien cordialement, @+
 

marc.gilliand

XLDnaute Occasionnel
oui, excusez-moi de ne pas avoir dit bonjour : Alors bonjour le Forum. Pour répondre à votre question est, que lorsque je sélectionne depuis la LB une pièce comptable et que je choisis une fonction, c'est plus visuel d'avoir toujours dans la listBox, la ligne sur laquelle je travaille, car actuellement, rien ne m'indique visuellement et clairement cela. J'ai juste les "données supplémentaires" de la pièce qui me disent que je travaille sur la pièce xxxxx
dixit : Vous devriez séparer vos fonctions, un usf pour la recherche, et des usf dédiés pour vos sous programmes.
donc, cela veut dire que je peux pas utiliser ce champ "recherche" ? ce champ est déjà programmé, mais apparemment il bug.
Merci de votre aide et mille excuses..
 

Etoto0026

XLDnaute Nouveau
Bonjour (c'est le compte secondaire d'@Etoto),

Se serait mieux de créer une nouvelle conversation pour cette question.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…