Adaptation d'une procédure évènementielle

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 !

criscris11

XLDnaute Accro
Bonjour à tous,
Ayant trouver un code qui me servirait dans un de mes fichiers de travail sur le site de Jacques BOIGONTIER, je n'arrive pas à l'adapter.

Voici le code :
Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As  Range)
  If Target.Column = 5 And Target.Count = 1 Then
    If Target.Value <> "" Then
      état = Target
      If état <> ActiveSheet.Name Then
        Application.EnableEvents = False
        Target.Offset(0, -4).Resize(1, 5).Copy  Sheets(état).[A65000].End(xlUp).Offset(1, 0)
        Target.Offset(0, -4).Resize(1, 5).Delete shift:=xlUp
        Application.EnableEvents = True
      End If
    End If
  End If
End Sub

Ce que je n'arrive pas à faire c'est de l'adapter à la disposition de mon fichier donc pourriez vous me dire, s'il vous plaît, comment faire pour déclencher ce code dans la colonne A au lieu de E (en fait ma colonne Etat serait en colonne A dans mon fichier) le reste sans changement sauf que mes lignes d'entêtes sont sur la ligne 2 de chaque onglets.
Avant de poster, j'ai essayé de modifier comme suit :

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As  Range)
  If Target.Column = 1 And Target.Count = 1 Then
    If Target.Value <> "" Then
      état = Target
      If état <> ActiveSheet.Name Then
        Application.EnableEvents = False
        Target.Offset(0, 5).Resize(0, 5).Copy  Sheets(état).[A65000].End(xlUp).Offset(2, 0)
        Target.Offset(0, 5).Resize(0, 5).Delete shift:=xlUp
        Application.EnableEvents = True
      End If
    End If
  End If
End Sub

mais l'évènement ne se déclenche plus. Pourquoi ?
Merci pour vos réponses et bonne journée à toutes et à tous.
 
Re : Adaptation d'une procédure évènementielle

Salut Pierrot,
Je te le confirme : le code est bien placé dans ThisWorkBook.
Au pire, je vais poster le fichier si tu peux regarder.
Merci d'avance et bonne journée à toi également.
 

Pièces jointes

Dernière édition:
Re : Adaptation d'une procédure évènementielle

Re,

fonctionne chez moi en modfiant comme suit, se déclenche bien lorsuqe cellule de colonne A modifiée, maintenant bogue avec le nom des onglets, mais normale puique pas en adéquation.....
Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  If Target.Column = 1 And Target.Count = 1 Then
    If Target.Value <> "" Then
      état = Target
      If état <> ActiveSheet.Name Then
        Application.EnableEvents = False
        Target.Offset(0, -4).Resize(1, 5).Copy Sheets(état).[A65000].End(xlUp).Offset(1, 0)
        Target.Offset(0, -4).Resize(1, 5).Delete shift:=xlUp
        Application.EnableEvents = True
      End If
    End If
  End If
End Sub
 
Re : Adaptation d'une procédure évènementielle

Re Pierrot,
Ben, je te confirme que rien ne se passe en changeant les valeurs de la colonne A.
Cf. fichier-joint.

Merci encore.
 

Pièces jointes

Re : Adaptation d'une procédure évènementielle

Re,

chez moi cela se déclenche bien.... par contre enlève les "offset" pour les instructions suivantes :
Code:
        Target.Resize(1, 5).Copy Sheets(état).[A65000].End(xlUp).Offset(1, 0)
        Target.Resize(1, 5).Delete shift:=xlUp

et assure toi au préalable que les événementielles soient bien actives, pour ce faire exécute l'instruction suivant dans un module standard.
Code:
Application.EnableEvents = True
 
Re : Adaptation d'une procédure évènementielle

Re,
Merci, tout est rentré dans l'ordre à présent cependant j'ai détecté 2 choses : effectivement j'avais une macro (remettre tous les filtres autos à zéro) qui désactivait les évènements donc j'ai supprimé la ligne incriminante.
J'ai également remarqué que dès que je modifiais le code et après avoir refermé VBE, les évènements ne se déclenchaient plus mais tout rentre dans l'ordre après l'enregistrement et la réouverture du fichier : enfin j'espère...
En tout cas, encore merci à toi pour m'avoir éclairer et bonne soirée.
 
Re : Adaptation d'une procédure évènementielle

Bonjour criscris,

Problème aussi lié au fait que lorsque tu "boguais" sur "l'offset" après avoir désactivé les événementielles, celles-ci n'étaient plus réactivées.... préférable de prévoir un "gestionaire d'erreur" pour éviter ce souci :
Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  If Target.Column = 1 And Target.Count = 1 Then
    If Target.Value <> "" Then
      état = Target
      If état <> ActiveSheet.Name Then
        On Error GoTo fin
        Application.EnableEvents = False
        Target.Resize(1, 5).Copy Sheets(état).[A65000].End(xlUp).Offset(1, 0)
        Target.Resize(1, 5).Delete shift:=xlUp
        
fin:    Application.EnableEvents = True
      End If
    End If
  End If
End Sub

bonne journée
@+
 
Re : Adaptation d'une procédure évènementielle

Bonsoir Pierrot,
Merci pour ces précisions.
Une question me vient à l'esprit : dans la macro d'origine, pourquoi désactive t'on les évènements (qui plus est pour une macro évènementielle) par Application.EnableEvents = False alors qu'on les réactive par la suite ? J'ai fait un test en enlevant la ligne de code qui désactive les évènements et on obtient bien le résultat attendu.

@+ de te lire et bonne soirée.
 
Re : Adaptation d'une procédure évènementielle

Bonjour criscris

Je les désactives afin d'éviter une boucle, cette procédure générant une modif sur la feuille, la procédure se déclenche de nouveau.... dans certains cas, fonction des cellules impactées, cela pose de vrais soucis....

bonne journée
@+
 
- 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

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Réponses
5
Affichages
755
  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
499
Retour