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

XL 2010 Bug Macro affecte image à listes déroulantes

  • Initiateur de la discussion Initiateur de la discussion Orson83
  • 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 !

Orson83

XLDnaute Impliqué
Bonjour la communauté,
J'ai un bug dans une macro qui permet de générer des images "flèche" à chaque liste déroulante.
En effet, toutes les flèches ne sont pas attribuées à mes listes et j'ai une erreur d'exécution 1004.
Merci pour votre aide. Mon exemple est annexé.
Tchotchodu31
 

Pièces jointes

Solution
Re,
Exact, ça rame un peu. Mais on trouve toujours une solution même si elle est vraiment bancale.
En insistant un peu, certains DoEvents ont été supprimés en accélérant le process avec un figeage écran:
Code:
Sub AffecteFlèche()
Application.ScreenUpdating = False
 For Each c In Cells.SpecialCells(xlCellTypeAllValidation)
   ActiveSheet.Shapes("fleche1").Copy
   c.Offset(, 1).Select
    DoEvents
    ActiveSheet.Paste
    DoEvents
    With Selection
        .Name = c.Address
        .Left = c.Offset(, 1).Left
        .Top = c.Offset(, 1).Top + 1
        .Height = c.Offset(, 1).Height
        .OnAction = "clicFlèche"
    End With
 Next c
End Sub
Bonjour @Tchotchodu31, @riton00 🙂

Chez moi (2010) ça marche impeccablement.

Ce qui m'interroge surtout, c'est pourquoi faire tant de choses bizarres en VBA alors qu'il existe déjà la flèche des liste de validations ?

C'est chercher des ennuis. Et à priori, on les a trouvés 😵 .
 
Dernière édition:
Bonsoir Tchotchodu31, Riton, MaPomme,
Sur 2007 c'est totalement aléatoire, mais il ne va jamais jusqu'à la fin.
Une piste peut être : si je mets un point d'arrêt sur Next c et que je boucle à la main alors ça marche impeccable.
Par contre pas de solution.
Un truc qui marche juste pour tester, mettre des DoEvents partout. par contre il faut que je les double. c'est vraiment bizarre. Comme si quand il faisait le paste, le paste précédent n'était pas terminé. 😱
VB:
Sub AffecteFlèche()
 For Each c In Cells.SpecialCells(xlCellTypeAllValidation)
   ActiveSheet.Shapes("fleche1").Copy
   c.Offset(, 1).Select
   DoEvents
   DoEvents
   ActiveSheet.Paste
   DoEvents
   DoEvents
   Selection.Name = c.Address
   Selection.Left = c.Offset(, 1).Left
   Selection.Top = c.Offset(, 1).Top + 1
   Selection.Height = c.Offset(, 1).Height
   Selection.OnAction = "clicFlèche"
   DoEvents
   DoEvents
 Next c
End Sub
 
Re,
Exact, ça rame un peu. Mais on trouve toujours une solution même si elle est vraiment bancale.
En insistant un peu, certains DoEvents ont été supprimés en accélérant le process avec un figeage écran:
Code:
Sub AffecteFlèche()
Application.ScreenUpdating = False
 For Each c In Cells.SpecialCells(xlCellTypeAllValidation)
   ActiveSheet.Shapes("fleche1").Copy
   c.Offset(, 1).Select
    DoEvents
    ActiveSheet.Paste
    DoEvents
    With Selection
        .Name = c.Address
        .Left = c.Offset(, 1).Left
        .Top = c.Offset(, 1).Top + 1
        .Height = c.Offset(, 1).Height
        .OnAction = "clicFlèche"
    End With
 Next c
End Sub
 
Re @sylvanu

Pour 1000 cellules, entre 0.47 et 0.60 secondes en 2010.
VB:
Sub AffecteFlèche()
Dim arr As Shape, T0
   T0 = Timer
   Application.ScreenUpdating = False
   For Each c In Cells.SpecialCells(xlCellTypeAllValidation)
      Set arr = ActiveSheet.Shapes("fleche1").Duplicate
      With c.Offset(, 1)
         arr.Name = c.Address
         arr.Left = .Left
         arr.Top = .Top + 1
         arr.Height = .Height
         arr.OnAction = "clicFlèche"
      End With
   Next c
   MsgBox Format(Timer - T0, "0.00\ sec.")
End Sub
 
Merci Sylvanu, cette macro fonctionne parfaitement.
Effectivement, je pense que la macro initiale posait problème avec Excel 2010.
Bonne soirée.
François
 
Merci Sylvanu, cette macro fonctionne parfaitement.
Effectivement, je pense que la macro initiale posait problème avec Excel 2010.
Bonne soirée.
François
Merci mapomme, cette macro fonctionne parfaitement.
Effectivement, je pense que la macro initiale posait problème avec Excel 2010.
Bonne soirée.
François
 
- 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
40
Affichages
1 K
  • Question Question
Microsoft 365 Bug sur une macro
Réponses
6
Affichages
382
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…