XL 2019 Supprimer des cellules en fonction d'une cellule de la ligne

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 !

chris4785478547

XLDnaute Junior
Bonjour tout le monde,
J'ai essayé de trouver cette solution sur ce forum et d'autres, même si certains sujets se rapprochent de mon problème, je n'arrive pas à adapter...
Il s'agit d'effacer les 8 premières colonnes de chaque ligne comprenant (en 1ere colonne) une date= "01/01/1900"
Ma macro est celle ci:

Sub Macro2()
'
' Macro2 Macro
'

Dim i, j

For i = 7 To 65535
If CDate(Cells(i, 1).Value) = "01/01/1900" Then
For j = 1 To 8
Cells(i, j).ClearContents
Next j
Next i

'

End Sub

Elle me renvoie une erreur de compilation : NEXT SANS FOR (sur le next i)
J'ai certainement une erreur de syntaxe mais je ne vois pas laquelle
Merci par avance.
 
Dernière édition:
Bonjour Chris,
Prenez l'habitude d'indenter:
VB:
Sub Macro2()
Dim i, j
For i = 7 To 65535
    If CDate(Cells(i, 1).Value) = "01/01/1900" Then
        For j = 1 To 8
            Cells(i, j).ClearContents
        Next j
    End If
Next i
End Sub
Il manquait un End If, et il y avait un End With en trop. 😛

En plus vous pouvez réduire la boucle en allant seulement jusqu'à le dernière cellule occupée avec :
Code:
For i = 7 To Range("A65500").End(xlUp).Row
 
Bonjour Chris,
Prenez l'habitude d'indenter:
VB:
Sub Macro2()
Dim i, j
For i = 7 To 65535
    If CDate(Cells(i, 1).Value) = "00/01/1900" Then
        For j = 1 To 8
            Cells(i, j).ClearContents
        Next j
    End If
Next i
End Sub
Il manquait un End If, et il y avait un End With en trop. 😛

En plus vous pouvez réduire la boucle en allant seulement jusqu'à le dernière cellule occupée avec :
Code:
For i = 7 To Range("A65500").End(xlUp).Row

Merci Sylvanu pour cette réponse.
Je venais de voir que j'avais omis d'enlever le End with mais le End if m'échappait toujours. Merci.
Pourtant, de mon côté j'ai une erreur:

"Erreur d'exécution 13: Incompatibilié de type"



VB:
Sub Macro2()
'
' Macro2 Macro
'

Dim i, j

    For i = 7 To 65535
        If CDate(Cells(i, 1).Value) = "00/01/1900" Then
            For j = 1 To 8
                Cells(i, j).ClearContents
            Next j
        End If
    Next i
End Sub

Si vous avez une idée...
Bien sûr, dès que ça fonctionnera, je raccourcirai mon code avec la proposition.
Merci
 
Dernière édition:
Re

Moi c'est à cause de
VB:
Sub Test()
[A1] = "01/01/1900"
MsgBox [A1].Value
End Sub
Ce qui m'a permis de re-découvrir rétro-news 😉
Donc rien que pour cela, merci à chris pour sa question 😉

NB: Si jamais il y avait des vrais 1 au milieu des 01/01/1900
Avec le X, c'est plus sexy, non ? 😉
 
Bonjour à tous 🙂,

Pour le fun :
VB:
Sub Macro1()
Dim x
   Application.ScreenUpdating = False
   For Each x In Range(Range("a7"), Cells(Rows.Count, 1).End(xlUp)).Cells
      If IsDate(x) Then If x = 1 Then x.Resize(, 8).ClearContents
   Next x
End Sub
 
Re

je voulais dire si il y a des 1 qui ne correspondent pas à 01/01/1900 mais à des 1 fait à la main, sans pesticides 😉
Et les données associées à ces vrais 1 ne doivent pas être effacés.
Avec mon code, seuls les 01/01/1900 sont traitées 😉

EDITION: Pan sur le nez
Au coin, Staple, j'ai dit une cronerie
Désolé.
 
- 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
3
Affichages
522
Retour