Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

définir un Range dans un Spreadsheet

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

Re : définir un Range dans un Spreadsheet

Bonjour Eric,

essaye ainsi, fonctionne chez moi sous 2003 :
Code:
    Dim c As Variant
    For Each c In UserForm1.Spreadsheet1.Worksheets(1).Range("A2:A5")
        c.Value = "ok"
    Next

bonne journée
@+
 
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:
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
 
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
823
Réponses
4
Affichages
578
Réponses
0
Affichages
616
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…