XL 2019 Worksheet_change fait planté excel

thespeedy20

XLDnaute Occasionnel
Bonjour,

Ma macro actuellement se trouve en worksheet_selection change et quand je la passe en worksheet selection, excel disparaît, en bref plante...

Pouvez-vous me dire pourquoi ? Merci


VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Plg As Range
Dim valeur
Dim valeur_2
    
    
    Set Plg = Sheets("Professeurs").Range("A1:G39")
    
    With Sheets("Absence formulaire")
        
        If .Range("A10").Value <> "" Then
                    
            .Range("B13").Value = WorksheetFunction.VLookup(.Range("A10").Value, Plg, 2, False)
            
        valeur = WorksheetFunction.VLookup(.Range("A10").Value, Plg, 3, False)
            
            Cells(17, 4).Value = Mid(valeur, 1, 1)
            For i = 1 To 6: .Cells(17, i + 5).Value = Mid(valeur, i + 1, 1): Next i
            For i = 1 To 4: .Cells(17, i + 12).Value = Mid(valeur, i + 7, 1): Next i
        
        valeur_2 = WorksheetFunction.VLookup(.Range("A10").Value, Plg, 4, False)
        
             For j = 1 To Len(valeur_2): .Cells(21, j + 3).Value = Mid(valeur_2, j, 1): Next j
      
         Else
        
         .Range("B13").Value = ""
         .Range(.Cells(17, 4), .Cells(17, 16)).ClearContents
         .Range(.Cells(21, 4), .Cells(21, 14)).ClearContents

End If
End With
End Sub
Oli
 

Fichiers joints

Staple1600

XLDnaute Barbatruc
Bonjour le fil,

Juste pour info
Tu peux simplifier la fin de ton code (l'effacement des cellules) comme suit
VB:
Sub Simplification()
Range("B13,D17:P17,D21:N21").ClearContents
'ou
Range("B13,D17:P17,D21:N21") = Empty
'ou
Range("B13,D17:P17,D21:N21") = ""
End Sub
 

eriiiic

XLDnaute Barbatruc
Bonjour à tous,

ça veut dire quoi
quand je la passe en worksheet selection
?

Ton With Sheets("Absence formulaire") est inutile.
Il s'agit de la feuille dont tu utilises un événement, elle obligatoirement active et prise par défaut.
Evite de sauter trop de lignes, on a 2 fois moins d'infos sous les yeux.
eric
 

Jacky67

XLDnaute Accro
Bonjour,

Ma macro actuellement se trouve en worksheet_selection change et quand je la passe en worksheet selection, excel disparaît, en bref plante...

Pouvez-vous me dire pourquoi ? Merci


VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Plg As Range
Dim valeur
Dim valeur_2
 
 
    Set Plg = Sheets("Professeurs").Range("A1:G39")
 
    With Sheets("Absence formulaire")
     
        If .Range("A10").Value <> "" Then
                 
            .Range("B13").Value = WorksheetFunction.VLookup(.Range("A10").Value, Plg, 2, False)
         
        valeur = WorksheetFunction.VLookup(.Range("A10").Value, Plg, 3, False)
         
            Cells(17, 4).Value = Mid(valeur, 1, 1)
            For i = 1 To 6: .Cells(17, i + 5).Value = Mid(valeur, i + 1, 1): Next i
            For i = 1 To 4: .Cells(17, i + 12).Value = Mid(valeur, i + 7, 1): Next i
     
        valeur_2 = WorksheetFunction.VLookup(.Range("A10").Value, Plg, 4, False)
     
             For j = 1 To Len(valeur_2): .Cells(21, j + 3).Value = Mid(valeur_2, j, 1): Next j
   
         Else
     
         .Range("B13").Value = ""
         .Range(.Cells(17, 4), .Cells(17, 16)).ClearContents
         .Range(.Cells(21, 4), .Cells(21, 14)).ClearContents

End If
End With
End Sub
Oli
Bonjour,
"worksheet selection", n'existe pas
Tu veux certainement parler de "Worksheet_Change"
Une piste
La macro évènementielle de " Worksheet_Change" comporte généralement cette instruction en début de macro
Application.EnableEvents = False
et en fin de macro
Application.EnableEvents = True
 

thespeedy20

XLDnaute Occasionnel
Bonjour Jacky67,

Merci beaucoup pour cette piste....elle fonctionne....

Je te remercie vivement

Merci aussi à : Staple1600, eriiic pour être intervenu sur ce poste

Oli
 
Haut Bas