Adaptation code VBA Excel 07 pourExcel 97

  • Initiateur de la discussion Initiateur de la discussion libellule85
  • Date de début Date de début

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 !

libellule85

XLDnaute Accro
Bonsoir tout le monde,
Ne maitrisant pas beaucoup VBA j'ai trouvé sur le net un code pour liste déroulante en cascade que j'ai adapté et qui fonctionne parfaitement sous Excel 07 (code que je joins ci-dessous). Par contre j'ai essayé sous Excel 97 et celà ne fonctionne pas. Je me tourne donc vers vous pour savoir quels modifications je dois apporter pour que celui-ci fonctionne également sous Excel 97.

Sur la feuille Choix :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Address = "$B$2" Then
    UserForm1.Show 0
  End If
End Sub

Et sur l'userform1 :
Code:
Private Sub UserForm_Initialize()
  Set f = Sheets("Listing")
  Set MonDico = CreateObject("Scripting.Dictionary")
  For Each c In Range(f.[A2], f.[A65000].End(xlUp))
    If c.Value <> "" Then MonDico.Item(c.Value) = c.Value
  Next c
  Me.ComboBox1.List = MonDico.items
  SendKeys "{F4}"
End Sub
Private Sub ComboBox1_Change()
  Set f = Sheets("Listing")
  i = 0
  Me.ComboBox2.Clear
  For Each c In Range(f.[A2], f.[A65000].End(xlUp))
   If c = Me.ComboBox1 Then
       Me.ComboBox2.AddItem
       Me.ComboBox2.List(i, 0) = c.Offset(, 1).Value
       Me.ComboBox2.List(i, 1) = c.Offset(0, 2).Value
       Me.ComboBox2.List(i, 2) = c.Offset(0, 3).Value
       Me.ComboBox2.List(i, 3) = c.Offset(0, 4).Value
       Me.ComboBox2.List(i, 4) = c.Offset(0, 5).Value
       Me.ComboBox2.List(i, 5) = c.Offset(0, 6).Value
       Me.ComboBox2.List(i, 6) = c.Offset(0, 7).Value
       Me.ComboBox2.List(i, 7) = c.Offset(0, 8).Value
       i = i + 1
   End If
  Next c
  Me.ComboBox2.SetFocus
  SendKeys "{F4}"
End Sub
Private Sub ComboBox2_Change()
   If Me.ComboBox2.ListIndex > -1 Then
     ActiveCell = Me.ComboBox1
     ActiveCell.Offset(2) = Me.ComboBox2
     ActiveCell.Offset(3) = Me.ComboBox2.Column(1)
     ActiveCell.Offset(4) = Me.ComboBox2.Column(2)
     ActiveCell.Offset(5) = Me.ComboBox2.Column(3)
     ActiveCell.Offset(6) = Me.ComboBox2.Column(4)
     ActiveCell.Offset(7) = Me.ComboBox2.Column(5)
     ActiveCell.Offset(8) = Me.ComboBox2.Column(6)
     End If
   Unload Me
End Sub

Merci pour votre aide
 
Re : Adaptation code VBA Excel 07 pourExcel 97

Bonsoir libellule85,

Normalement, sous Excel 97, il y a des fonctionnalités qui n'existent pas encore.

Leur présence provoque alors des erreurs de compilation.

Commencez donc par nous dire laquelle est rejetée.

Je penche pour l'objet "Scripting.Dictionary".

Auquel cas il faudra utiliser une autre méthode pour remplir la ComboBox.

A+
 
Re : Adaptation code VBA Excel 07 pourExcel 97

Re,

Sur Excel 97 essayez successivement :

Code:
Private Sub UserForm_Initialize()
  Dim f As Worksheet, MonDico As Object, c As Range
  Set f = Sheets("Listing")
  Set MonDico = CreateObject("Scripting.Dictionary")
  For Each c In f.Range("A2", f.[A65000].End(xlUp))
    If c.Value <> "" Then MonDico(c.Value) = c.Value
  Next c
  ComboBox1.List = MonDico.items
  SendKeys "{F4}"
End Sub
Puis, si ça ne marche pas :

Code:
Private Sub UserForm_Initialize()
  Dim f As Worksheet, c As Range
  Set f = Sheets("Listing")
  For Each c In f.Range("A2", f.[A65000].End(xlUp))
    If c.Value <> "" And Application.CountIf(f.Range("A2", c), c) = 1 _
      Then ComboBox1.AddItem c
  Next c
  SendKeys "{F4}"
End Sub
A+
 
Re : Adaptation code VBA Excel 07 pourExcel 97

Re,

L'erreur ne vient certainement pas de cette macro Initialize mais d'une des autres.

N'ouvrez pas l'UserForm mais placez vous sur la feuille de code de l'UserForm.

Puis Menu Débogage => Compiler VBAProject.

Quel expression se surligne en bleu avec l'erreur de compilation ?

A+
 
Re : Adaptation code VBA Excel 07 pourExcel 97

Salut,supprime le 0
dans
Code:
UserForm1.Show

Extrait de l'aide XL97
Un objet UserForm est toujours modal, il en résulte que l’utilisateur doit toujours répondre avant d’utiliser une autre partie de l’application. Aucun autre code ne s’exécutera tant que l’objet UserForm ne sera pas masqué ou déchargé.
 
Dernière édition:
- 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
10
Affichages
661
Réponses
5
Affichages
910
Retour