ma Macro en cours de fonctionnement saute vers une autre Macro (Worksheet_Change)

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

Wyrox51

XLDnaute Nouveau
Bonjour,

Le nom peut-être bizarre dit comme ça mais je vais m'expliquer :

VB:
Dim WbkS As Workbook
    Dim WbkD As Workbook
    Dim Dl%, i%, j%, k%
    Set WbkS = ThisWorkbook
  
    Application.Dialogs(xlDialogOpen).Show 'Ouvre le fichier
    Set WbkD = ActiveWorkbook 'Nouveau classeur
    'Dl = Range("c" & Rows.Count).End(xlUp).Row
    'Dl = Range("Saisie").Rows.Count
    Dl = Range("Table").Rows.Count + 1
    j = 2
    k = 23
  
    For i = 2 To Dl 'boucle pour récup les données
    'ATTENTION : Il faudra changer le WbkD à droit du égale en
    ' WbkS pour récupérer les données de l'autre fichier
        [B]WbkS.Sheets("Michel").Cells(k, 2) = WbkD.Sheets("Feuil1").Cells(j, 1)[/B]
        WbkS.Sheets("Michel").Cells(k, 3) = WbkD.Sheets("Feuil1").Cells(j, 2)
        WbkS.Sheets("Michel").Cells(k, 4) = WbkD.Sheets("Feuil1").Cells(j, 3)
        WbkS.Sheets("Michel").Cells(k, 5) = WbkD.Sheets("Feuil1").Cells(j, 4)
        WbkS.Sheets("Michel").Cells(k, 6) = WbkD.Sheets("Feuil1").Cells(j, 5)
        WbkS.Sheets("Michel").Cells(k, 7) = WbkD.Sheets("Feuil1").Cells(j, 6)
        WbkS.Sheets("Michel").Cells(k, 8) = WbkD.Sheets("Feuil1").Cells(j, 7)
        j = j + 1
        k = k + 1
    Next
  
    ActiveWorkbook.Close 'Fermée le classeur

Voici mon code, qui est comme vous pouvez le remarquer, là pour copier et coller des données d'un autre fichier. Tout fonctionne parfaitement jusqu'à la ligne en gras (qui fonctionne elle aussi).
Après cette ligne là, il part vers une macro d'un worksheet (voir ci-dessous) :

VB:
Private Sub Worksheet_Change(ByVal Target As Range)

    ***********
    [B]Set Sais = Sheets("Michel")[/B]
    Set c = Worksheets("******")
    Set s = Worksheets("******")
    Set b = Worksheets("******")

Et s'arrête à la ligne en gras. (Les * sont là car je masque certaine chose, mais il y a bien une écrite à la place). Pour au final me dire "L'indice n'appartient pas à la sélection"

Quelqu'un pourrait-il m'aider et m'expliquer pourquoi après la première ligne en gras il saute vers la macro intégré à la feuille pour au final me faire une erreur.

Merci d'avance

PS : En essayant de mettre la macro de feuille en commentaire, ma macro de copier-coller fonctionne parfaitement.
 
J'ai continuer à chercher et j'ai trouvé la solution sur un de vos posts Dranreb ! Je mets le lien ici ainsi que la solution pour de futurs personnes


Pour que la modification d'une cellule depuis du code ne provoque pas d'exécution intempestive voire récursive d'une Workseet_Change, il faut placer
VB:Copier dans le presse-papier
Application.EnableEvents = False
devant, et ne surtout pas oublier de le remettre à True ensuite, sinon plus aucune procédure d'évenement ne fonctionnera pour l'utilisateur.
À+


Message de Dranreb - 14 avril 2011 - 15ème message
 
Vous pourriez d'ailleurs vous passer de la boucle en faisant :
VB:
    Application.EnableEvents = False
    WbkS.Sheets("Michel").Cells(23, 2).Resize(d1, 7).Value _
      = WbkD.Sheets("Feuil1").Cells(2, 1).Resize(d1, 7).Value
    Application.EnableEvents = True
Ou peut être tout simplement, je ne sais pas :
Code:
    Application.EnableEvents = False
    With Range("Table")
        WbkS.Sheets("Michel").Cells(23, 2).Resize(.Rows.Count, _
           .Columns.Count).Value = .Value
        End With
    Application.EnableEvents = True
 
- 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
9
Affichages
395
Réponses
4
Affichages
402
Réponses
7
Affichages
558
Réponses
3
Affichages
531
Réponses
2
Affichages
1 K
Retour