Microsoft 365 Erreur 9 sur macro VBA

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

oceeaa

XLDnaute Nouveau
Bonjour,

J'ai réalisé une macro sur VBA seulement lorsque je l'exécute une erreur "9" s'affiche. J'ai fait des recherches mais je ne parviens pas à comprendre comment la supprimer.
J'ai réalisé des listes déroulantes dépendantes.
Une capture d'écran de ce que je souhaite obtenir est sur le fichier excel

Je vous remercie d'avance!
 

Pièces jointes

soan

XLDnaute Barbatruc
Inactif
Bonsoir oceeaa, ChTi160,

ton fichier en retour. :)

* fais Ctrl e ; regarde B2 ; appuie sur la touche Echap ➯ sortie du formulaire

* fais Ctrl e ; regarde la liste No Commercial ; y'a bien 1 à 3 (c'était pareil avant de faire Echap)

* choisis un autre jour, et regarde la liste No Commercial (elle se met à jour correctement)

* fais pareil qu'au point précédent, pour tester selon plusieurs jours différents.

* quand t'auras fini de jouer avec ton formulaire, clique sur le bouton Fermer.​



code VBA (40 lignes) :

VB:
Option Explicit

Dim dcol%

Private Sub cbjour_Change()
  Dim dlg&, col%: col = cbjour.ListIndex + 2
  dlg = Cells(Rows.Count, col).End(3).Row: If dlg < 3 Then Exit Sub
  cbnocommercial.Clear 'on vide la liste déroulante des commerciaux
  If dlg = 3 Then
    cbnocommercial = Cells(3, col)
  Else
    cbnocommercial.List = Cells(3, col).Resize(dlg - 2).Value
    cbnocommercial.ListIndex = 0
  End If
  'on retire les couleurs des en-têtes
  With [B2].Resize(, dcol - 1)
    With .Font: .ColorIndex = -4105: .Bold = 0: End With
    .Interior.ColorIndex = -4142
  End With
  'on met une couleur de remplissage pour le jour choisi
  With Cells(2, col)
    With .Font: .ColorIndex = 2: .Bold = -1: End With
    .Interior.ColorIndex = 32
  End With
End Sub

Private Sub cbjour_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
  If KeyAscii = 27 Then Unload Me
End Sub

Private Sub cmdQuit_Click()
  Unload Me
End Sub

Private Sub UserForm_Initialize()
  dcol = Cells(2, Columns.Count).End(1).Column: If dcol = 1 Then Exit Sub
  cbjour.List = Application.Transpose([B2].Resize(, dcol - 1).Value)
  cbjour.ListIndex = 0
End Sub

si besoin, tu peux demander une adaptation.
à te lire pour avoir ton avis.


soan
 

Pièces jointes

Discussions similaires

Réponses
10
Affichages
479
  • Question Question
Microsoft 365 Excel365
Réponses
2
Affichages
441
Réponses
3
Affichages
431
Réponses
14
Affichages
364
Réponses
1
Affichages
241
Réponses
9
Affichages
361
  • Question Question
Microsoft 365 VBA Excel PowerPoint
Réponses
5
Affichages
299
  • Question Question
Microsoft 365 Macro archivage
Réponses
9
Affichages
527
  • Question Question
Microsoft 365 Nom variable dans Macro
Réponses
2
Affichages
283

Membres actuellement en ligne

Statistiques des forums

Discussions
315 283
Messages
2 118 013
Membres
113 408
dernier inscrit
lausablk