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
 

Pièces jointes

  • Maladie d'un jour_change.xlsm
    60.9 KB · Affichages: 6

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
 

Jacky67

XLDnaute Barbatruc
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
 

Discussions similaires

Réponses
6
Affichages
202
Réponses
4
Affichages
165