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

Adaptation code VBA Excel 07 pourExcel 97

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
 

job75

XLDnaute Barbatruc
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+
 

job75

XLDnaute Barbatruc
Re : Adaptation code VBA Excel 07 pourExcel 97

Bonjour libellule,

Il y a forcément un message d'erreur.

Vous ne pensez pas qu'il serait utile de nous dire lequel ???

A+
 

libellule85

XLDnaute Accro
Re : Adaptation code VBA Excel 07 pourExcel 97

Bonjour job75,
le message d'erreur :"Erreur de compilation Nombre d'arguments incorrect ou affectation de propiété incorrecte"
Avec mes excuses pour l'oubli
 

job75

XLDnaute Barbatruc
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+
 

job75

XLDnaute Barbatruc
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+
 

kiki29

XLDnaute Barbatruc
Re : Adaptation code VBA Excel 07 pourExcel 97

Salut,supprime le 0
dans
Code:
UserForm1.Show

Extrait de l'aide XL97
 
Dernière édition:

libellule85

XLDnaute Accro
Re : Adaptation code VBA Excel 07 pourExcel 97

Bonjour Kjin, MJ13, Kiki29,
Merci beaucoup pour vos réponses, j'essaierais en enlevant le 0 demain matin...
Je vous tiendrais au courant
Bonne soirée
 

libellule85

XLDnaute Accro
Re : Adaptation code VBA Excel 07 pourExcel 97

Bonjour vous tous,
J'ai donc supprimé le 0 comme disait Kiki29 et cela fonctionne impeccablement.
Merci à vous tous pour vos réponses
Bonne journée
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…