"For Each Cell In Range" sur feuille non active

babylonzoo

XLDnaute Nouveau
Bonjour à tous,
la question est dans le titre. Peut on balayer un range de cellules (listbox a alimenter sans doublons dans mon cas) sans que la feuille soit active. j'ai essayer sheets et worsheets avant Range, de passer par un Set plage (For Each Cell In plage) ect ... mais rien a faire, si je n'active pas la feuille la macro de fonctionne pas.
Merci pour vos reponses
Babylonzoo
 

Gorfael

XLDnaute Barbatruc
Re : "For Each Cell In Range" sur feuille non active

Salut babylonzoo et le forum
Sans code, rien à faire, je n'arrive pas à le dépanner :D !!!
Ma boule de cristal, qui est brumeuse, semble me dire que tu utilises des Select...
A+
 

babylonzoo

XLDnaute Nouveau
Re : "For Each Cell In Range" sur feuille non active

merci pour votre aide
ci joint la partie du code qui fonctionne tant que la sheets(x) est active.

Code:
Private Sub ListBox14_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim var21 As String
Dim x As Byte
Dim ii As Long
Dim b As Range
Dim col As Integer
Dim Cell As Range
Dim Unique As New Collection
Dim Valeur As Range
Dim plage As Range

Me.ListBox15.Clear

On Error Resume Next

var21 = ListBox14.List(ListBox14.ListIndex, 0)

For x = 1 To Sheets.Count
Set b = Workbooks("base données").Sheets(x).Rows(2).Find(var21, LookIn:=xlValues, lookat:=xlWhole)

    If Not b Is Nothing Then
    col = b.Column
    ii = Workbooks("base données").Sheets(x).Cells(65536, col).End(xlUp).Row
    Set plage = Workbooks("base données").Sheets(x).Range(Cells(3, col), Cells(ii, col))

    For Each Cell In plage
    Unique.Add Cell, CStr(Cell)
    Next Cell

    For Each Valeur In Unique
    Me.ListBox15.AddItem Valeur
    Next Valeur

    End If

Next

End Sub

si vous avez qqs idées ... avec with et end with ne fonctionne pas non plus

sinon je ferai un fichier d'exemple

babylonzoo
 
Dernière édition:

Gorfael

XLDnaute Barbatruc
Re : "For Each Cell In Range" sur feuille non active

Salut babylonzoo et le forum
Ce que tu écris :
Code:
Set plage = Workbooks("base données").Sheets(x).Range(Cells(3, col), Cells(ii, col))
Ce que lit excel :
Code:
Set plage = Workbooks("base données").Sheets(x).Range(ActiveSheet.Cells(3, col), ActiveSheet.Cells(ii, col))
Pas étonnant qu'il fasse un KK nerveux :D
Un truc dans ce style lui faciliterait sans doute le transist intestinal :
Code:
        With Workbooks("base données").Sheets(x)
            Set plage = .Range(.Cells(3, col), .Cells(ii, col))
        End With
A+
 

Gorfael

XLDnaute Barbatruc
Re : "For Each Cell In Range" sur feuille non active

Salut babylonzoo et le forum
je ne parle pas encore assez bien "excel" je crois..
On fait tous des erreurs. Et celle-ci, est une typique, mais qui est plus rigolote quand elle ne déclenche pas d'erreur : passé quelques heures à chercher pourquoi je ne parcourais pas toute ma plage à chaque fois. Pourtant quand Je suivais en pas-è-pas en regardaht les valeurs dans ma feuille mon F1.range("A" & Cells(65536,"A").end(xlup).row) me donnait toujours la bonne ligne :eek:...
 

Discussions similaires

Réponses
1
Affichages
221
Réponses
0
Affichages
193
Réponses
3
Affichages
593

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 756
Messages
2 091 734
Membres
105 060
dernier inscrit
DEDJAN Gaston