définir un Range dans un Spreadsheet

eriiic

XLDnaute Barbatruc
Bonjour à tous,

Je n'arrive pas à boucler sur des cellules d'une plage lorsque la feuille est objet d'un userform.
Je dois mal m'y prendre ou il doit manquer quelque chose mais quoi ?
A chaque fois j'ai 'incompatibilité de type'...

Code:
Private Sub Spreadsheet1_SelectionChange()
    Dim c As Range
    ' ligne correcte
    UserForm1.Spreadsheet1.Worksheets(1).Cells(1, 1) = "ok"
    ' si sélection je récupère bien la plage
    MsgBox (Spreadsheet1.Selection.Address)
    ' mais impossible de boucler dessus
    For Each c In Spreadsheet1.Selection
        c = 3
    Next c
    ' impossible de boucler également sur une plage fixée
    For Each c In UserForm1.Spreadsheet1.Worksheets(1).Range("A2:A5")
        c = "ok"
    Next
End Sub
Merci pour votre aide

eric

PS: sélectionner une plage dans le spreadsheet pour tester
 

Pièces jointes

  • Classeur1.xls
    32.5 KB · Affichages: 67
  • Classeur1.xls
    32.5 KB · Affichages: 76
  • Classeur1.xls
    32.5 KB · Affichages: 70

eriiic

XLDnaute Barbatruc
Re : définir un Range dans un Spreadsheet

Bonjour Pierrot,

Bonne idée, effectivement je n'ai plus d'erreur.

Mais... rien ne s'inscrit dans les cellules :-s
J'ai tenté un .refresh sans résultat.
et MsgBox (UserForm1.Spreadsheet1.Worksheets(1).Cells(3, 1)) me confirme que cette cellule est bien vide.

J'ai l'impression qu'il y a de sérieuses limitations mais ça me parait quand même étonnant que ce soit à ce point, et je ne vois pas comment l'écrire autrement.

Et je ne trouve aucune doc en ligne sur la gestion de cet objet...

Merci
eric

Edit : je n'avais pas corrigé le c en c.value, et là c'est tout bon :)
Grand merci et bonne journée :)
 
Dernière édition:

MichelXld

XLDnaute Barbatruc
Re : définir un Range dans un Spreadsheet

Bonjour Eric, bonjour cher Pierrot,

En complément de la réponse de Pierrot, la définition de variable type Range du SpreadSheet doit être rédigée ainsi :

Code:
    Dim c As OWC11.Range

OWC11 étant à adapter en fonction de la version utilisée

bon dimanche
michel
 

Staple1600

XLDnaute Barbatruc
Dernière édition:

eriiic

XLDnaute Barbatruc
Re : définir un Range dans un Spreadsheet

Bonjour Michel, Staple,

Je viens de tester rapidement dim c as OWC11.Range mais j'ai une erreur 'type défini par l'utilisateur non défini'.
En consultant j'ai pourtant la version 11.0.0.8304, je reprendrai les tests plus tard car là j'ai un anni (pas le mien) à préparer pour ce soir ;-)

Merci
eric
 

eriiic

XLDnaute Barbatruc
Re : définir un Range dans un Spreadsheet

Bonsoir tout le monde,

Des news de mon pb...
Comme Dim c As OWC11.Range ne marchait pas chez moi j'ai voulu réinstaller OWC11 sur le lien fourni ici.
Hé bé plus rien ne marchait, à l'ouverture de mon fichier j'avais un beau message :
"Erreur système &H80040111 (-2147221231) ClassFactory..."

Après différent tatonnements voici comment s'en débarrasser :
Dans le répertoire 'C:\Program Files (x86)\Common Files\microsoft shared\Web Components\11' renommer OWC11.DLL puis faire une réparation d'Office.
La dll d'origine fait 7.6Mo, celle installée par le lien : 6.7Mo
Pourtant c'est bien la version française pour office 2003 (?)

Je vais me contenter de as variant ;-)
Merci de votre aide
eric
 

Discussions similaires

Réponses
12
Affichages
250
Réponses
12
Affichages
568

Statistiques des forums

Discussions
312 215
Messages
2 086 330
Membres
103 188
dernier inscrit
evebar