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

[RESOLU]Compatibilité excel 2003 et 2007

cathodique

XLDnaute Barbatruc
Bonjour,

c'est peut-être simple, mais je ne trouve pas. Avec ces lignes de code, j'alimente une combobox (inspiré d'un exemple de Boisgontier).
VB:
Private Sub UserForm_Initialize()
    Dim mondico As Object
    Dim c As Range

    Set F = Sheets("Users")
    Set mondico = CreateObject("Scripting.Dictionary")
    For Each c In Range(F.[a2], F.[a1048576].End(xlUp))  '******cette ligne*****
        mondico(c.Value) = UCase(c.Value)
    Next c
    Me.ComboBox1.List = mondico.items

End Sub
En ouvrant mon fichier sous excel 2003, le code plante c'est normal on fait référence dans le code à 1048576 lignes.

Or sous excel 2003 il n'y en a que 65536.

Les crochés si je ne trompe pas indique que l'on prend en compte les valeurs.

Alors ma question est: peut-on en utilisant cette "technique" de crochées pour faire un code compatible excel 2003 et 2007.

En vous remerciant beaucoup.
 
Dernière édition:

Roland_M

XLDnaute Barbatruc
Re : Compatibilité excel 2003 et 2007

bonjour,

pour la compatibilité il faut utiliser rows.count et columns.count

EDIT: voir comme ceci

Code:
Private Sub UserForm_Initialize()
    Dim MonDico As Object, C As Range, R$
    Set F = Sheets("Users")
    R$ = "$A$2:" & F.Range("A" & Rows.Count).End(xlUp).Address
    Set MonDico = CreateObject("Scripting.Dictionary")
    For Each C In F.Range(R$)  '******cette ligne*****
       MonDico(C.Value) = UCase(C.Value)
    Next C
    Me.ComboBox1.List = MonDico.items
End Sub
 
Dernière édition:

cathodique

XLDnaute Barbatruc
Re : Compatibilité excel 2003 et 2007

Merci Roland_M,

J'ai fait comme ceci
VB:
For Each c In Range(F.[a2], F.[a & rows.count].End(xlUp))

Mais ça plante, j'ai un message d'erreur 'objet requis".

Ma question était, si on pouvait garder les crochées et avoir un code compatible.

Si ce n'est pas possible, j'adopte ton code en utilisant la plage de données. c'est ce que tu as fait, R est bien une plage?

Merci beaucoup.
 
Dernière édition:

Roland_M

XLDnaute Barbatruc
Re : Compatibilité excel 2003 et 2007

re

as-tu vu mon edit !
j'ai mis ta routine modifiée !

Code:
Private Sub UserForm_Initialize()
    Dim MonDico As Object, C As Range, R$
    Set F = Sheets("Users")
    R$ = "$A$2:" & F.Range("A" & Rows.Count).End(xlUp).Address
    Set MonDico = CreateObject("Scripting.Dictionary")
    For Each C In F.Range(R$)  '******cette ligne*****
       MonDico(C.Value) = UCase(C.Value)
    Next C
    Me.ComboBox1.List = MonDico.items
End Sub
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…