Suppression de plusieurs cellules avec condition

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

S

skygoat76

Guest
Bonjour,

Mon problème est le suivant:
J'ai tapé un bout de code pour écrire l'année + le numéro de semaine dans une cellule quand la date est tapée:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim annee, semaine As String

    If Target.Column = 11 Then
        If Target = "" Then
            Cells(Target.Row, 14) = ""
        Else
            annee = Right(Str(Format(Cells(Target.Row, 11).Value, "yyyy")), 2)
            semaine = Str(DatePart("ww", Target, 2, 2))
            If CInt(semaine) >= 10 Then
                Cells(Target.Row, 14) = CInt(annee + semaine)
            Else
                Cells(Target.Row, 14) = CInt(annee + "0" + semaine)
            End If
        End If
    End If

End Sub

Concrètement, si on tape 29/06/09 dans la colonne K, on obtient 927 dans la colonne N. Si je supprime une date en colonne K, la semaine est également supprimée.

Le problème est que si je supprime une sélection de date (exemple de K1 à K3), ma macro plante

une idée?
 

Pièces jointes

Dernière modification par un modérateur:
Re : Suppression de plusieurs cellules avec condition

Bonjour,

essaie ainsi :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim annee, semaine As String
Dim Cel As Range
If Target.Column = 11 Then
    Application.EnableEvents = False
    If Target.Count = 1 Then
        If Target = "" Or IsEmpty(ActiveCell.Value = "") = True Then
            Cells(Target.Row, 14) = ""
        Else
            annee = Right(Str(Format(Cells(Target.Row, 11).Value, "yyyy")), 2)
            semaine = Str(DatePart("ww", Target, 2, 2))
            If CInt(semaine) >= 10 Then
                Cells(Target.Row, 14) = CInt(annee + semaine)
            Else
                Cells(Target.Row, 14) = CInt(annee + "0" + semaine)
            End If
        End If
    Else
        If Application.CountA(Target) = 0 Then
            For Each Cel In Target
                Cells(Cel.Row, 14) = ""
            Next Cel
        End If
    End If
End If
Application.EnableEvents = True
End Sub
 
Dernière édition:
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
1
Affichages
468
Réponses
3
Affichages
647
Réponses
35
Affichages
2 K
Réponses
16
Affichages
2 K
Retour