Bug Excel à l'exécution de la macro

Bonjour,

Je n'ai pas trouvé de sujet semblable donc j'en ouvre un.

Voilà un fichier. Avant: pas de problème, tout s'exécutait parfaitement. Tout d'un coup, un jour, quand je l'exécute (cad que j'entre les initiales de prénoms dans la colonne A et que la macro doit automatiquement mettre le nom complet dans la colonne B), Excel bug et me met qu'il a rencontré un problème et qu'il doit redémarrer.

Pour info: la macro ne marche qu'à partir de la ligne 618.

Une idée du problème s'il vous plaît?

Bonjour,

Avec ton code, lorsqu’une modification est détectée dans la feuille ‘’ FNED 2014’’ on vérifie si la valeur de la cellule placée en colonne A, sur la même ligne que la cellule modifiée, fait partie de la liste des initiales de noms.

Si c’est le cas, on inscrit le nom complet dans la cellule adjacente en colonne B.

Le problème, c’est que cette inscription constitue une nouvelle modification dans la feuille ‘’ FNED 2014’’. Le programme est donc relancé et on effectue la même vérification, etc, etc... le programme se mord la queue.

Voici une proposition pour pallier ce dysfonctionnement

A+

Bonjour le fil

Une parade toute simple et efficace est d'arrêté les événements avant modification

et de ré-activer les événements après

Application.EnableEvents = False
' ....
Application.EnableEvents = True

Dans ton fichier, voici le code optimisé

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim Initiales As String, Lig As Long, sNom As String
  Dim RngSearch As Range, LigF As Long
  ' Mémoriser la ligne active
  Lig = ActiveCell.Row
  ' Récupérer les initiales saisie
  Initiales = Target.Value
  ' Si vide ou suppression des initiales
  If Initiales = "" Then
    ' Désactiver les événements avant modification
    Application.EnableEvents = False
    ' Effacer le nom si existe
    Cells(Lig, 2).ClearContents
    ' Ré-activer les événements
    Application.EnableEvents = True
    ' Sortir de la procédure
    Exit Sub
  End If
  ' Chercher dans la table des émetteurs
  With Sheets("index")
    ' Définir la plage de recherche
    Set RngSearch = .Range("A6:A" & .Range("A" & Rows.Count).End(xlUp).Row)
    ' Eviter les erreur si initiales non trouvée
    On Error Resume Next
    ' Trouver la ligne correspondante
    LigF = 0
    LigF = RngSearch.Find(What:=Initiales).Row
    On Error GoTo 0
    ' Si la ligne a été trovuée, récupérer le nom
    If LigF <> 0 Then sNom = .Range("B" & LigF).Value
  End With
  ' Effacer les variable objet
  Set RngSearch = Nothing
  ' Désactiver les événements avant modification
  Application.EnableEvents = False
  ' Inscrire le nom de la personne
  Cells(Lig, 2).Value = sNom
  ' Ré-activer les événements
  Application.EnableEvents = True
End Sub

A+

J'avais pas vu vos réponses!! C'est génial en tout cas! Je vous remercie bien!

Rechercher des sujets similaires à "bug execution macro"