Se connecter avec
S'enregistrer | Connectez-vous

Erreur 28 espace pile insuffisant vba excel

Dernière réponse : dans Programmation

Bonjour à tous,

J'aurais besoin d'un regard neuf, je n'arrive pas à désengorger l'espace pile d'excel, pourtant je sais d'où vient le problème mais je n'arrive pas à le résoudre!!!!

Je suis en train de réaliser un formulaire de saisie via userform avec rappel automatique de certains champs insérés (comme le champs NOM dans la colonne A par exemple) mais le plus simple est que je vous montre mon code:

Code Visual Basic :

Private Sub CmbNom_Click()
If Me.CmbNom.ListIndex = -1 Then Exit Sub 'ON sort si pas de sélection
CmbNom = WS.Range("A" & Me.CmbNom.ListIndex + 2) '=MON ERREUR VIENT D'ICI
Txt1 = WS.Range("B" & Me.CmbNom.ListIndex + 2) 'On alimente les données correspondant à la ligne
Txt2 = WS.Range("C" & Me.CmbNom.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
'CmbResto = WS.Range("D" & Me.CmbNom.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
Txt4 = WS.Range("E" & Me.CmbNom.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
Txt5 = WS.Range("F" & Me.CmbNom.ListIndex + 2) 'On alimente les données correspondant à la ligne
Txt11 = WS.Range("G" & Me.CmbNom.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
Txt12 = WS.Range("H" & Me.CmbNom.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille

'ici on initialise les Variable pour mémoriser le valeur précédente en cas de Modif
With Me
Nom = .CmbNom
End With
End Sub



Ce code fonctionne très bien pour retourner les champs de la feuille dans mon formulaire, mais si la feuille dépasse environ 20, 30 lignes, j'ai des messages comme quoi la pile est plein "erreur d'exécution 28 espace pile insuffisant"....

Si quelqu'un aurait une idée, car je commence à désespérer!!!
Merci d'avance à tous ceux qui se pencheront sur mon problème.

Typhoon
Lassé par la pub ? Créez un compte

Bonjour
Je pense que le blème est le suivant :
. L'évènement click d'un combobox se déclenche quand une valeur de la zone de saisie correspond exactement à une valeur de la liste;
le code "CmbNom = WS.Range("A" & Me.CmbNom.ListIndex + 2)" déclenche cet évenement ce qui provoque une boucle sur l'évènement et le remplissage de la pile!

Préferer peut-être un évenement "mouse down" ou "Change" ou "afterchange"...
Expert Programmation

Salut typhoon751,
Sois le bienvenu.

Accepte de respecter le règlement et comme Oozenot te le propose, utilise la balise [code] pour présenter ton code. Clique sur l'icône blanche en bas à droite de ton message pour le mettre en conformité.
[:zeb:6]

Sinon, l'utilisation d'une variable temporaire devrait résoudre tous tes problèmes !

Voilà la présentation
  1. Private Sub CmbNom_Click()
  2. If Me.CmbNom.ListIndex = -1 Then Exit Sub 'ON sort si pas de sélection
  3. CmbNom = WS.Range("A" & Me.CmbNom.ListIndex + 2) '=MON ERREUR VIENT D'ICI
  4. Txt1 = WS.Range("B" & Me.CmbNom.ListIndex + 2) 'On alimente les données correspondant à la ligne
  5. Txt2 = WS.Range("C" & Me.CmbNom.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
  6. 'CmbResto = WS.Range("D" & Me.CmbNom.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
  7. Txt4 = WS.Range("E" & Me.CmbNom.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
  8. Txt5 = WS.Range("F" & Me.CmbNom.ListIndex + 2) 'On alimente les données correspondant à la ligne
  9. Txt11 = WS.Range("G" & Me.CmbNom.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
  10. Txt12 = WS.Range("H" & Me.CmbNom.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
  11.  
  12. 'ici on initialise les Variable pour mémoriser le valeur précédente en cas de Modif
  13. With Me
  14. Nom = .CmbNom
  15. End With
  16. End Sub
Lassé par la pub ? Créez un compte