For Each....

unrender

XLDnaute Junior
Bonjour à tous...

En fait, je m'arrache les cheveux sur un petit problème.
J'ai un For Each dans une procédure.
Si le classeur et la feuille auquels font références le For Each sont actifs à l'écran,
tout se passe bien.
Par contre, si je ne suis pas sur la bonne feuille ou si le focus est mis sur un autre
classeur, je reçois une erreur d'exécution 1004.
Pourtant, je pense avoir mis les bonnes infos dans le range (pplage)

Je ne sais pas si c'est très clair....

Code:
Dim wbp As Workbook
Dim tabligne(100, 1)


Set wbp = Workbooks("Pointage.xlsm")
Set wbbase = Workbooks.Open(ThisWorkbook.Path & "\Base.xlsm")

lastline = wbbase.Sheets(1).Range("A65536").End(xlUp).Row


i = 1

Set pplage = wbp.Sheets(2).Range(Cells(1, 10), Cells(lastline, 10))
For Each cc In pplage
    tabligne(pplage, 0) = wbp.Sheets(2).Cells(i, 10)
    tabligne(pplage, 1) = wbp.Sheets(2).Cells(i, 11)
    i = i + 1
Next


Avez-vous une idée ?

Merci...
 

Pierrot93

XLDnaute Barbatruc
Re : For Each....

Bonjour,

essaye en modifiant comme suit :
Code:
With wbp.Sheets(2)
    Set pplage = .Range(.Cells(1, 10), .Cells(lastline, 10))
    For Each cc In pplage
        tabligne(pplage, 0) = .Cells(i, 10)
        tabligne(pplage, 1) = .Cells(i, 11)
        i = i + 1
    Next
End With

bon après midi
@+
 

Dranreb

XLDnaute Barbatruc
Re : For Each....

Bonjour.
Je ne voit pas comment ça peut marcher de toutes façon.
Vous tentez d'affecter quelque chose à un élément de tableau en précisant comme premier indice un variant contenant un tableau à 2 dimensions de lastline lignes x 1 colonne issue de la propriété Value (non précisée mais donc assumée par défaut) de la plage définie dans la variable pplage. Qu'est-ce qu'il devrait faire avec çà ?
À+
 

Efgé

XLDnaute Barbatruc
Re : For Each....

Bonjour unrender, Pierrot :), Dranreb,
Je vois que les boules de cristals chauffent ;). De mon coté j'ai vu ça:
VB:
With wbp.Sheets(2)
    Set pplage = .Range(.Cells(1, 10), .Cells(lastline, 10))
    For Each cc In pplage
        tabligne(i, 0) = .Cells(cc.Row, 10)
        tabligne(i, 1) = .Cells(cc.Row, 11)
        i = i + 1
    Next
End With
Mais allez savoir.....
Cordialement
 

unrender

XLDnaute Junior
Re : For Each....

Bonjour à tous et merci de vos réponses.

@ Dranreb : j'ai dû vous relire plusieurs fois pour vous comprendre LoL. j'ai cru que j'allais attraper une migraine, mais vous aviez raison, et Efgé à bien corrigé ça...
Je ne sais pas pourquoi j'ai mis pplage à la place de i dans tabligne !!!

Du coup la solution de Pierrot avec la petite correction d'Efgé fonctionne :

Code:
With wbp.Sheets(2)
     Set pplage = .Range(.Cells(1, 10), .Cells(lastline, 10))
     For Each cc In pplage
         tabligne(i, 0) = .Cells(cc.Row, 10)
         tabligne(i, 1) = .Cells(cc.Row, 11)
         i = i + 1
     Next
 End With

Que ce soit :
Code:
tabligne(i, 0) = .Cells(cc.Row, 10)
ou
Code:
tabligne(i, 0) = .Cells(i, 10)

Un grand merci à vous 3.
 
Dernière édition:

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 977
dernier inscrit
Hermet