Données non visible dans listbox

Cougar

XLDnaute Impliqué
Bonjour à tous,

Hier notre ami Hervé m’a corrigé quelques erreurs dans mon code.
Mais voilà que je transcrit le tout dans le bon fichier et il ne fonctionne plus.

Pour faire la vérification clique sur le bouton Rechercher une pièce. Dans la listbox rien n’apparaît et pourtant, je crois, que tout est OK.

Est-ce que cela pourrait être dû au fait que ma feuille Données est cachée ?

Merci pour votre aide.
[file name=TestDonnees.zip size=41458]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/TestDonnees.zip[/file]
 

Pièces jointes

  • TestDonnees.zip
    40.5 KB · Affichages: 18

PascalXLD

XLDnaute Barbatruc
Modérateur
re

tu fais une boucle inutile dans ton initialisation

Pourquoi tu passes par un tableau intermediaire pour alimenter ton combo

tu peux faire simplement en gardant la même philosophie

Private Sub UserForm_Initialize()
Dim c As Range
Dim L As Integer
'Workbooks('Planification aux presses.xls').Activate
With Worksheets('Données')
L = .Range('a10000').End(xlUp).Row
End With
On Error Resume Next
For Each c In Range('a2:a' & L)
ComboBox1.AddItem c.Value
Next c

End Sub
 

Hervé

XLDnaute Barbatruc
bonjour cougar, pascal

pascal cougar utilise une collection pour pouvoir trier sans doublons ces numéros.

cougar :

ton code :

Private Sub UsfChercher_Initialize()----> quelque soit le nom du usf l'initialise c'est toujours UserForm_Initialize
Dim nom As New Collection
Dim item
Dim c As Range
Dim L As Integer
Workbooks('Planification aux presses.xls').Activate--> pourquoi active tu ce fichier alors que tes données sont dans testdonnées ???
With Worksheets('Données')
L = .Range('a10000').End(xlUp).Row
End With
On Error Resume Next
For Each c In Range('a2:a' & L)---> ici tu fait référence à la feuille active, soit tu modifies sheets('données').range, soit tu englobe cette ligne dans le with
nom.Add c.Value, CStr(c.Value)
Next c
On Error GoTo 0
For Each item In nom
ComboBox1.AddItem item-----> cette synthaxe ne marche pas.
Next item

End Sub

une synthaxe qui marche :

Private Sub UserForm_Initialize()
Dim nom As New Collection
Dim item
Dim c As Range
Dim L As Integer
Dim i As Byte

'Workbooks('Planification aux presses.xls').Activate
With Worksheets('Données')
    L = .Range('a10000').End(xlUp).Row
   
On Error Resume Next
   
   
For Each c In .Range('a2:a' & L)
        nom.Add c.Value, CStr(c.Value)
   
Next c
   
End With

On Error GoTo 0

For i = 1 To nom.Count
    ComboBox1.AddItem nom.item(i)
Next i

End Sub

salut

Message édité par: Hervé, à: 02/08/2005 16:41
 

Hervé

XLDnaute Barbatruc
re cougar , pascal, le forum

cougar en passant, corrige aussi ta macro combobox1.change :

With Worksheets('Données')
L = .Range('a10000').End(xlUp).Row
tabtemp = .Range('A2:F' & L).Value
End With

la aussi tu initialisais tabtemp avec la feuille active et non la feuille données.

salut
 

Hervé

XLDnaute Barbatruc
rebonjour cougar, pascal, le forum

Cougar, comme ca en passant (encore) as-tu vu que pascal avait aussi participé à la réponse ?

Enfin si ce qu'on à dit avec pascal était bon car au regard de ton dernier message, on en sait rien :eek:

Tu ne peux pas activer une feuille cachée. Il faut d'abord la rendre visible :

Sheets('Données').Visible = True
Sheets('Données').select

Tu n'a pas besoin de sélectionner une feuille (et encore moins de la rendre visible) pour pouvoir travaillé avec.

par contre pour faire référence à une autre feuille (masqué ou pas) que la feuille active, il faut faire référence à celle.ci :

En imaginant que tu es sur la feuille1 de ton classeur :

range('a1') va faire référence à la cellule A1 de la feuille active, tandis que sheets('feuil2').range('a1'), fera référence à la cellule A1 de la feuille 2.

Souvent dans les codes pour éviter de toujours taper sheets('Feuil2'), on utilise un bloc d'instruction qui commence par with et se termine par end with

à l'intérieur de se bloc, on place les instructions qui on comme dénominateur commun le même objet (feuille, userform,...)

ainsi :

with sheets('feuil2') ==== avec la feuille ('feuil2')
.range('a1')='toto'
.range('b1')='cougar'
end with

Le . devant range est très important car il permet de 'lier' l'instruction qui le suit au bloc with.

en espérant t'avoir éclairer.
salut
 

Cougar

XLDnaute Impliqué
Bonjour Pascal, Hervé, le forum,

Mille excuse pour mon oubli de mentionner Pascal. :S

Voici le code :

With Sheets('Données')
.Range ('a2:a')
L = .Range('a10000').End(xlUp).Row
On Error Resume Next
For Each c In Range('a2:a' & L)
nom.Add c.Value, CStr(c.Value)
Next c
End With

Pourtant la listbox demeure vide ?
 

Hervé

XLDnaute Barbatruc
re tout le monde

:)

rassure moi, cougar tu as lu mon long discours???

Tu sais, celui ou je parle des bloc with et de POINT devant les range, Oh je sais il était un peu rébarbatif, mais il aurait pu t'aider à corriger ton code :

With Sheets('Données')
'.Range ('a2:a') <============inutile
L = .Range('a10000').End(xlUp).Row
On Error Resume Next
For Each c In .Range('a2:a' & L) '<======rajoute un point
nom.Add c.Value, CStr(c.Value)
Next c
End With

salut
 

Cougar

XLDnaute Impliqué
Bonsoir Pascal, Hervé, le forum,

Je peux t'assurer Hervé que j'avais bien compris qu'il fallait mettre un .Range avec un With mais j'avais essayé plusieurs choses sans succès et oublié de mettre ce fameux ..

Mais malheureusement pour moi, malgré l'ajout du . cela ne fonctionne toujours pas ?

Peut-être qu'avec le fichier joint cela aidera ?

Merci
 

Hervé

XLDnaute Barbatruc
rebonsoir cougar, le forum

:)

j'ai pas vu ton fichier, mais je te renvoi le tien avec toutes les modifications que l'on à commenter tout au long de ce post.

ce fichier fonctionne chez moi, au moins dans la partie recherche, j'ai pas regardé le reste du fichier.

salut [file name=TestDonnees_20050802211255.zip size=36103]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/TestDonnees_20050802211255.zip[/file]

Message édité par: Hervé, à: 02/08/2005 21:12
 

Pièces jointes

  • TestDonnees_20050802211255.zip
    35.3 KB · Affichages: 16

Discussions similaires

Statistiques des forums

Discussions
312 338
Messages
2 087 397
Membres
103 535
dernier inscrit
moimeme1