J'ai écris cette fonction pour créer une liste déroulante en filtrant les
doublons mais j'ai une erreur du type :
"Nombre d'arguments incorretc ou affection de propriété incorrecte"
Je n'arrive pas à trouer de ou ça vient.
Pouvez-vous m'aider ?
Voila mon code
Option Explicit
Private Sub UserForm_Initialize()
' Construction de la liste Transaction
List_transaction = Construction_list("b")
' On initalise la liste avec le premier nom
' List_transaction.Value = List_transaction(1)
End Sub
Function Construction_list(col As String)
Dim i As Integer, derlg
Dim Cell As Range
Dim List_temp As New Collection
Dim List_ret As New Collection
On Error Resume Next
'filtre les doubons pas collection
derlg = Range(col & "65536").End(3).Row
For Each Cell In Range(col & "2:" & col & derlg)
List_temp.Add Cell, CStr(Cell)
Next Cell
On Error GoTo 0
'insertion données uniques dans le Combobox
For i = 1 To List_temp.Count
If (List_temp(i) <> "") Then List_ret.Add List_temp(i)
Next i
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Christian Hugoud
Essaie déjà de mettre cela dans le load. Dans l'initialize, rien n'est encore créé.
Christian
"Jacques" a écrit dans le message de news: 4334f3ca$0$1709$
Bonjour,
J'ai écris cette fonction pour créer une liste déroulante en filtrant les doublons mais j'ai une erreur du type : "Nombre d'arguments incorretc ou affection de propriété incorrecte" Je n'arrive pas à trouer de ou ça vient. Pouvez-vous m'aider ? Voila mon code
Option Explicit
Private Sub UserForm_Initialize() ' Construction de la liste Transaction List_transaction = Construction_list("b")
' On initalise la liste avec le premier nom ' List_transaction.Value = List_transaction(1) End Sub
Function Construction_list(col As String)
Dim i As Integer, derlg Dim Cell As Range Dim List_temp As New Collection Dim List_ret As New Collection
On Error Resume Next 'filtre les doubons pas collection derlg = Range(col & "65536").End(3).Row For Each Cell In Range(col & "2:" & col & derlg) List_temp.Add Cell, CStr(Cell) Next Cell On Error GoTo 0
'insertion données uniques dans le Combobox For i = 1 To List_temp.Count If (List_temp(i) <> "") Then List_ret.Add List_temp(i) Next i
Construction_list = List_ret End Function
Merci d'avance Jacqques
Essaie déjà de mettre cela dans le load. Dans l'initialize, rien n'est
encore créé.
Christian
"Jacques" <jj@free.fr> a écrit dans le message de news:
4334f3ca$0$1709$8fcfb975@news.wanadoo.fr...
Bonjour,
J'ai écris cette fonction pour créer une liste déroulante en filtrant les
doublons mais j'ai une erreur du type :
"Nombre d'arguments incorretc ou affection de propriété incorrecte"
Je n'arrive pas à trouer de ou ça vient.
Pouvez-vous m'aider ?
Voila mon code
Option Explicit
Private Sub UserForm_Initialize()
' Construction de la liste Transaction
List_transaction = Construction_list("b")
' On initalise la liste avec le premier nom
' List_transaction.Value = List_transaction(1)
End Sub
Function Construction_list(col As String)
Dim i As Integer, derlg
Dim Cell As Range
Dim List_temp As New Collection
Dim List_ret As New Collection
On Error Resume Next
'filtre les doubons pas collection
derlg = Range(col & "65536").End(3).Row
For Each Cell In Range(col & "2:" & col & derlg)
List_temp.Add Cell, CStr(Cell)
Next Cell
On Error GoTo 0
'insertion données uniques dans le Combobox
For i = 1 To List_temp.Count
If (List_temp(i) <> "") Then List_ret.Add List_temp(i)
Next i
Essaie déjà de mettre cela dans le load. Dans l'initialize, rien n'est encore créé.
Christian
"Jacques" a écrit dans le message de news: 4334f3ca$0$1709$
Bonjour,
J'ai écris cette fonction pour créer une liste déroulante en filtrant les doublons mais j'ai une erreur du type : "Nombre d'arguments incorretc ou affection de propriété incorrecte" Je n'arrive pas à trouer de ou ça vient. Pouvez-vous m'aider ? Voila mon code
Option Explicit
Private Sub UserForm_Initialize() ' Construction de la liste Transaction List_transaction = Construction_list("b")
' On initalise la liste avec le premier nom ' List_transaction.Value = List_transaction(1) End Sub
Function Construction_list(col As String)
Dim i As Integer, derlg Dim Cell As Range Dim List_temp As New Collection Dim List_ret As New Collection
On Error Resume Next 'filtre les doubons pas collection derlg = Range(col & "65536").End(3).Row For Each Cell In Range(col & "2:" & col & derlg) List_temp.Add Cell, CStr(Cell) Next Cell On Error GoTo 0
'insertion données uniques dans le Combobox For i = 1 To List_temp.Count If (List_temp(i) <> "") Then List_ret.Add List_temp(i) Next i
Construction_list = List_ret End Function
Merci d'avance Jacqques
Jacques
Excuse moi mais j'ai pas compris, je suis un débutant.
Jacques
"Christian Hugoud" a écrit dans le message de news:
Essaie déjà de mettre cela dans le load. Dans l'initialize, rien n'est encore créé.
Christian
"Jacques" a écrit dans le message de news: 4334f3ca$0$1709$
Bonjour,
J'ai écris cette fonction pour créer une liste déroulante en filtrant les doublons mais j'ai une erreur du type : "Nombre d'arguments incorretc ou affection de propriété incorrecte" Je n'arrive pas à trouer de ou ça vient. Pouvez-vous m'aider ? Voila mon code
Option Explicit
Private Sub UserForm_Initialize() ' Construction de la liste Transaction List_transaction = Construction_list("b")
' On initalise la liste avec le premier nom ' List_transaction.Value = List_transaction(1) End Sub
Function Construction_list(col As String)
Dim i As Integer, derlg Dim Cell As Range Dim List_temp As New Collection Dim List_ret As New Collection
On Error Resume Next 'filtre les doubons pas collection derlg = Range(col & "65536").End(3).Row For Each Cell In Range(col & "2:" & col & derlg) List_temp.Add Cell, CStr(Cell) Next Cell On Error GoTo 0
'insertion données uniques dans le Combobox For i = 1 To List_temp.Count If (List_temp(i) <> "") Then List_ret.Add List_temp(i) Next i
Construction_list = List_ret End Function
Merci d'avance Jacqques
Excuse moi mais j'ai pas compris, je suis un débutant.
Jacques
"Christian Hugoud" <c2h_nospam@couriel.biz> a écrit dans le message de news:
uEqGTNPwFHA.2960@tk2msftngp13.phx.gbl...
Essaie déjà de mettre cela dans le load. Dans l'initialize, rien n'est
encore créé.
Christian
"Jacques" <jj@free.fr> a écrit dans le message de news:
4334f3ca$0$1709$8fcfb975@news.wanadoo.fr...
Bonjour,
J'ai écris cette fonction pour créer une liste déroulante en filtrant les
doublons mais j'ai une erreur du type :
"Nombre d'arguments incorretc ou affection de propriété incorrecte"
Je n'arrive pas à trouer de ou ça vient.
Pouvez-vous m'aider ?
Voila mon code
Option Explicit
Private Sub UserForm_Initialize()
' Construction de la liste Transaction
List_transaction = Construction_list("b")
' On initalise la liste avec le premier nom
' List_transaction.Value = List_transaction(1)
End Sub
Function Construction_list(col As String)
Dim i As Integer, derlg
Dim Cell As Range
Dim List_temp As New Collection
Dim List_ret As New Collection
On Error Resume Next
'filtre les doubons pas collection
derlg = Range(col & "65536").End(3).Row
For Each Cell In Range(col & "2:" & col & derlg)
List_temp.Add Cell, CStr(Cell)
Next Cell
On Error GoTo 0
'insertion données uniques dans le Combobox
For i = 1 To List_temp.Count
If (List_temp(i) <> "") Then List_ret.Add List_temp(i)
Next i
Excuse moi mais j'ai pas compris, je suis un débutant.
Jacques
"Christian Hugoud" a écrit dans le message de news:
Essaie déjà de mettre cela dans le load. Dans l'initialize, rien n'est encore créé.
Christian
"Jacques" a écrit dans le message de news: 4334f3ca$0$1709$
Bonjour,
J'ai écris cette fonction pour créer une liste déroulante en filtrant les doublons mais j'ai une erreur du type : "Nombre d'arguments incorretc ou affection de propriété incorrecte" Je n'arrive pas à trouer de ou ça vient. Pouvez-vous m'aider ? Voila mon code
Option Explicit
Private Sub UserForm_Initialize() ' Construction de la liste Transaction List_transaction = Construction_list("b")
' On initalise la liste avec le premier nom ' List_transaction.Value = List_transaction(1) End Sub
Function Construction_list(col As String)
Dim i As Integer, derlg Dim Cell As Range Dim List_temp As New Collection Dim List_ret As New Collection
On Error Resume Next 'filtre les doubons pas collection derlg = Range(col & "65536").End(3).Row For Each Cell In Range(col & "2:" & col & derlg) List_temp.Add Cell, CStr(Cell) Next Cell On Error GoTo 0
'insertion données uniques dans le Combobox For i = 1 To List_temp.Count If (List_temp(i) <> "") Then List_ret.Add List_temp(i) Next i
Construction_list = List_ret End Function
Merci d'avance Jacqques
Christian Hugoud
Le code que tu as placé est dans l'évènement Initialize de la feuille. Cet évènement survient avant que la feuille (et donc ses composants et objets) soit créée.
Place le même code dans l'évènement load. Enlève-le de l'Initialize.
Christian
"Jacques" a écrit dans le message de news: 43357664$0$27418$
Excuse moi mais j'ai pas compris, je suis un débutant.
Jacques
"Christian Hugoud" a écrit dans le message de news:
Essaie déjà de mettre cela dans le load. Dans l'initialize, rien n'est encore créé.
Christian
"Jacques" a écrit dans le message de news: 4334f3ca$0$1709$
Bonjour,
J'ai écris cette fonction pour créer une liste déroulante en filtrant les doublons mais j'ai une erreur du type : "Nombre d'arguments incorretc ou affection de propriété incorrecte" Je n'arrive pas à trouer de ou ça vient. Pouvez-vous m'aider ? Voila mon code
Option Explicit
Private Sub UserForm_Initialize() ' Construction de la liste Transaction List_transaction = Construction_list("b")
' On initalise la liste avec le premier nom ' List_transaction.Value = List_transaction(1) End Sub
Function Construction_list(col As String)
Dim i As Integer, derlg Dim Cell As Range Dim List_temp As New Collection Dim List_ret As New Collection
On Error Resume Next 'filtre les doubons pas collection derlg = Range(col & "65536").End(3).Row For Each Cell In Range(col & "2:" & col & derlg) List_temp.Add Cell, CStr(Cell) Next Cell On Error GoTo 0
'insertion données uniques dans le Combobox For i = 1 To List_temp.Count If (List_temp(i) <> "") Then List_ret.Add List_temp(i) Next i
Construction_list = List_ret End Function
Merci d'avance Jacqques
Le code que tu as placé est dans l'évènement Initialize de la feuille. Cet
évènement survient avant que la feuille (et donc ses composants et objets)
soit créée.
Place le même code dans l'évènement load. Enlève-le de l'Initialize.
Christian
"Jacques" <jj@free.fr> a écrit dans le message de news:
43357664$0$27418$8fcfb975@news.wanadoo.fr...
Excuse moi mais j'ai pas compris, je suis un débutant.
Jacques
"Christian Hugoud" <c2h_nospam@couriel.biz> a écrit dans le message de
news: uEqGTNPwFHA.2960@tk2msftngp13.phx.gbl...
Essaie déjà de mettre cela dans le load. Dans l'initialize, rien n'est
encore créé.
Christian
"Jacques" <jj@free.fr> a écrit dans le message de news:
4334f3ca$0$1709$8fcfb975@news.wanadoo.fr...
Bonjour,
J'ai écris cette fonction pour créer une liste déroulante en filtrant
les doublons mais j'ai une erreur du type :
"Nombre d'arguments incorretc ou affection de propriété incorrecte"
Je n'arrive pas à trouer de ou ça vient.
Pouvez-vous m'aider ?
Voila mon code
Option Explicit
Private Sub UserForm_Initialize()
' Construction de la liste Transaction
List_transaction = Construction_list("b")
' On initalise la liste avec le premier nom
' List_transaction.Value = List_transaction(1)
End Sub
Function Construction_list(col As String)
Dim i As Integer, derlg
Dim Cell As Range
Dim List_temp As New Collection
Dim List_ret As New Collection
On Error Resume Next
'filtre les doubons pas collection
derlg = Range(col & "65536").End(3).Row
For Each Cell In Range(col & "2:" & col & derlg)
List_temp.Add Cell, CStr(Cell)
Next Cell
On Error GoTo 0
'insertion données uniques dans le Combobox
For i = 1 To List_temp.Count
If (List_temp(i) <> "") Then List_ret.Add List_temp(i)
Next i
Le code que tu as placé est dans l'évènement Initialize de la feuille. Cet évènement survient avant que la feuille (et donc ses composants et objets) soit créée.
Place le même code dans l'évènement load. Enlève-le de l'Initialize.
Christian
"Jacques" a écrit dans le message de news: 43357664$0$27418$
Excuse moi mais j'ai pas compris, je suis un débutant.
Jacques
"Christian Hugoud" a écrit dans le message de news:
Essaie déjà de mettre cela dans le load. Dans l'initialize, rien n'est encore créé.
Christian
"Jacques" a écrit dans le message de news: 4334f3ca$0$1709$
Bonjour,
J'ai écris cette fonction pour créer une liste déroulante en filtrant les doublons mais j'ai une erreur du type : "Nombre d'arguments incorretc ou affection de propriété incorrecte" Je n'arrive pas à trouer de ou ça vient. Pouvez-vous m'aider ? Voila mon code
Option Explicit
Private Sub UserForm_Initialize() ' Construction de la liste Transaction List_transaction = Construction_list("b")
' On initalise la liste avec le premier nom ' List_transaction.Value = List_transaction(1) End Sub
Function Construction_list(col As String)
Dim i As Integer, derlg Dim Cell As Range Dim List_temp As New Collection Dim List_ret As New Collection
On Error Resume Next 'filtre les doubons pas collection derlg = Range(col & "65536").End(3).Row For Each Cell In Range(col & "2:" & col & derlg) List_temp.Add Cell, CStr(Cell) Next Cell On Error GoTo 0
'insertion données uniques dans le Combobox For i = 1 To List_temp.Count If (List_temp(i) <> "") Then List_ret.Add List_temp(i) Next i
Construction_list = List_ret End Function
Merci d'avance Jacqques
parci
On Sat, 24 Sep 2005 12:34:43 +0200, "Christian Hugoud" wrote:
Essaie déjà de mettre cela dans le load. Dans l'initialize, rien n'est encore créé.
C'est du VBA (l'événement Initialize est équivalent au Load de VB)
L'erreur vient de la fonction Construction_list qui retourne une collection donc un objet : dans ce cas l'affectation doit se faire avec Set. Même chose quand tu affecte le résultat de la fonction dans la variable List_transaction (qui n'est pas déclarée). D'autre part, ça serait mieux de typer explicitement le type de variable que doit retourner cette fonction. Enfin, la collection ainsi construire contient des références sur des objets Range, si j'ai à peu près compris c'est les valeurs qui t'intéresse. Et en prime, le dernier bloc n'a aucune utilité : si une valeur existe déjà dans la collection, elle ne peut être ajoutée (normalement il y a une erreur de générée mais ignorée ici du fait du On Error Resume Next).
Avec ces quelques corrections :
Private Sub UserForm_Initialize()
' Construction de la liste Transaction Dim List_transaction As Collection Set List_transaction = Construction_list("b")
' on fait des trucs ' et on libère la référence Set List_transaction = Nothing
End Sub
Function Construction_list(col As String) As Collection
Dim i As Integer Dim derlg As Long Dim Cell As Range Dim List_ret As New Collection
On Error Resume Next 'filtre les doubons derlg = Range(col & "65536").End(3).Row For Each Cell In Range(col & "2:" & col & derlg) List_ret.Add Cell.Value, CStr(Cell) Next Cell On Error GoTo 0
Set Construction_list = List_ret
End Function
Personnellement je l'écrirai plutôt comme ça (c'est plus lisible d'intialiser puis de libérer la référence sur une variable objet dans la procédure où elle utilisée) :
Private Sub UserForm_Initialize()
' Construction de la liste Transaction Dim List_transaction As Collection Set List_transaction = New Collection
If Construction_list("b", List_transaction) Then ' on fait des trucs End If
' et on libère la référence Set List_transaction = Nothing
End Sub
Function Construction_list(col As String, _ List_transaction As Collection) As Boolean
Dim i As Integer Dim derlg As Long Dim Cell As Range
On Error Resume Next 'filtre les doubons derlg = Range(col & "65536").End(3).Row For Each Cell In Range(col & "2:" & col & derlg) List_transaction.Add Cell.Value, CStr(Cell) Next Cell On Error GoTo 0
Essaie déjà de mettre cela dans le load. Dans l'initialize, rien n'est
encore créé.
C'est du VBA (l'événement Initialize est équivalent au Load de VB)
L'erreur vient de la fonction Construction_list qui retourne une
collection donc un objet : dans ce cas l'affectation doit se faire
avec Set. Même chose quand tu affecte le résultat de la fonction dans
la variable List_transaction (qui n'est pas déclarée). D'autre part,
ça serait mieux de typer explicitement le type de variable que doit
retourner cette fonction. Enfin, la collection ainsi construire
contient des références sur des objets Range, si j'ai à peu près
compris c'est les valeurs qui t'intéresse. Et en prime, le dernier
bloc n'a aucune utilité : si une valeur existe déjà dans la
collection, elle ne peut être ajoutée (normalement il y a une erreur
de générée mais ignorée ici du fait du On Error Resume Next).
Avec ces quelques corrections :
Private Sub UserForm_Initialize()
' Construction de la liste Transaction
Dim List_transaction As Collection
Set List_transaction = Construction_list("b")
' on fait des trucs
' et on libère la référence
Set List_transaction = Nothing
End Sub
Function Construction_list(col As String) As Collection
Dim i As Integer
Dim derlg As Long
Dim Cell As Range
Dim List_ret As New Collection
On Error Resume Next
'filtre les doubons
derlg = Range(col & "65536").End(3).Row
For Each Cell In Range(col & "2:" & col & derlg)
List_ret.Add Cell.Value, CStr(Cell)
Next Cell
On Error GoTo 0
Set Construction_list = List_ret
End Function
Personnellement je l'écrirai plutôt comme ça (c'est plus lisible
d'intialiser puis de libérer la référence sur une variable objet dans
la procédure où elle utilisée) :
Private Sub UserForm_Initialize()
' Construction de la liste Transaction
Dim List_transaction As Collection
Set List_transaction = New Collection
If Construction_list("b", List_transaction) Then
' on fait des trucs
End If
' et on libère la référence
Set List_transaction = Nothing
End Sub
Function Construction_list(col As String, _
List_transaction As Collection) As Boolean
Dim i As Integer
Dim derlg As Long
Dim Cell As Range
On Error Resume Next
'filtre les doubons
derlg = Range(col & "65536").End(3).Row
For Each Cell In Range(col & "2:" & col & derlg)
List_transaction.Add Cell.Value, CStr(Cell)
Next Cell
On Error GoTo 0
On Sat, 24 Sep 2005 12:34:43 +0200, "Christian Hugoud" wrote:
Essaie déjà de mettre cela dans le load. Dans l'initialize, rien n'est encore créé.
C'est du VBA (l'événement Initialize est équivalent au Load de VB)
L'erreur vient de la fonction Construction_list qui retourne une collection donc un objet : dans ce cas l'affectation doit se faire avec Set. Même chose quand tu affecte le résultat de la fonction dans la variable List_transaction (qui n'est pas déclarée). D'autre part, ça serait mieux de typer explicitement le type de variable que doit retourner cette fonction. Enfin, la collection ainsi construire contient des références sur des objets Range, si j'ai à peu près compris c'est les valeurs qui t'intéresse. Et en prime, le dernier bloc n'a aucune utilité : si une valeur existe déjà dans la collection, elle ne peut être ajoutée (normalement il y a une erreur de générée mais ignorée ici du fait du On Error Resume Next).
Avec ces quelques corrections :
Private Sub UserForm_Initialize()
' Construction de la liste Transaction Dim List_transaction As Collection Set List_transaction = Construction_list("b")
' on fait des trucs ' et on libère la référence Set List_transaction = Nothing
End Sub
Function Construction_list(col As String) As Collection
Dim i As Integer Dim derlg As Long Dim Cell As Range Dim List_ret As New Collection
On Error Resume Next 'filtre les doubons derlg = Range(col & "65536").End(3).Row For Each Cell In Range(col & "2:" & col & derlg) List_ret.Add Cell.Value, CStr(Cell) Next Cell On Error GoTo 0
Set Construction_list = List_ret
End Function
Personnellement je l'écrirai plutôt comme ça (c'est plus lisible d'intialiser puis de libérer la référence sur une variable objet dans la procédure où elle utilisée) :
Private Sub UserForm_Initialize()
' Construction de la liste Transaction Dim List_transaction As Collection Set List_transaction = New Collection
If Construction_list("b", List_transaction) Then ' on fait des trucs End If
' et on libère la référence Set List_transaction = Nothing
End Sub
Function Construction_list(col As String, _ List_transaction As Collection) As Boolean
Dim i As Integer Dim derlg As Long Dim Cell As Range
On Error Resume Next 'filtre les doubons derlg = Range(col & "65536").End(3).Row For Each Cell In Range(col & "2:" & col & derlg) List_transaction.Add Cell.Value, CStr(Cell) Next Cell On Error GoTo 0
Construction_list = True
End Function
Jacques93
Bonjour Christian Hugoud, Christian Hugoud a écrit :
Le code que tu as placé est dans l'évènement Initialize de la feuille. Cet évènement survient avant que la feuille (et donc ses composants et objets) soit créée.
Place le même code dans l'évènement load. Enlève-le de l'Initialize.
Christian
D'après le code posté par Jacques :
Private Sub UserForm_Initialize()
donc l'utilisation, d'un UserForm, il semble qu'il s'agisse de code VBA Excel. D'ailleurs la question a été également posée sur mpfe. Et en VBA Excel, il n'y a pas d'événement Load. Je crois que son problème a été solutionné.
-- Cordialement,
Jacques.
Bonjour Christian Hugoud,
Christian Hugoud a écrit :
Le code que tu as placé est dans l'évènement Initialize de la feuille. Cet
évènement survient avant que la feuille (et donc ses composants et objets)
soit créée.
Place le même code dans l'évènement load. Enlève-le de l'Initialize.
Christian
D'après le code posté par Jacques :
Private Sub UserForm_Initialize()
donc l'utilisation, d'un UserForm, il semble qu'il s'agisse de code VBA
Excel. D'ailleurs la question a été également posée sur mpfe. Et en VBA
Excel, il n'y a pas d'événement Load. Je crois que son problème a été
solutionné.
Bonjour Christian Hugoud, Christian Hugoud a écrit :
Le code que tu as placé est dans l'évènement Initialize de la feuille. Cet évènement survient avant que la feuille (et donc ses composants et objets) soit créée.
Place le même code dans l'évènement load. Enlève-le de l'Initialize.
Christian
D'après le code posté par Jacques :
Private Sub UserForm_Initialize()
donc l'utilisation, d'un UserForm, il semble qu'il s'agisse de code VBA Excel. D'ailleurs la question a été également posée sur mpfe. Et en VBA Excel, il n'y a pas d'événement Load. Je crois que son problème a été solutionné.