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.
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 :
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 :
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
Sub Macro3()
Const X = #12/31/1899#
Dim i, j
For i = 7 To 65535
If Cells(i, 1).Value = X Then
For j = 1 To 8
Cells(i, j).ClearContents
Next j
End If
Next i
End Sub
Certes oui
Mais je n'ai pas compris pourquoi vous prenez le 00/01/1900 (ou 31/12/1899) alors qu'il parle d'un 1 et non d'un 0 (?)
Quoiqu'il en soit, inutile de s'encombrer d'un CDate()
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
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é.