bonjour,
En revanche si je regroupe sur une seule ligne avec la fonction and
If ActiveCell.Offset(0, 1) = 0 And ActiveCell.Offset(0, 2) = 0 Then
ActiveCell.Offset(0, 1) = "" And ActiveCell.Offset(0, 2) = ""
End If
Avec cette modification d'instruction, il ne prend pas ma condition.
ce n'est pas parce que l'on dit/écrit les choses d'une certaine façon en français, que c'est comme cela qu'on doit les traduire en VBA !
il faut respecter la syntaxe et comprendre la signification de chaque instruction.
chaque instruction doit être sur une ligne différente ou séparée par :
Pas par "And" : Le "And" est un opérateur logique (qui attend comme opérandes des valeurs VRAI ou FAUX)
Si on essaie de traduire ce que tu as écrit, ce serait quelque chose du genre :
mettre dans activecell.offset(0,1) le résultat de l'opération logique "AND" entre "" (pas un opérande logique, d'où l'erreur de type) et le résultat de la comparaison activecell.offset(0,2) avec "".
donc ta première écriture est correcte (une ligne par instruction)
If ActiveCell.Offset(0, 1) = 0 And ActiveCell.Offset(0, 2) = 0 Then
ActiveCell.Offset(0, 1) = ""
ActiveCell.Offset(0, 2) = ""
End If
et si tu veux les 2 instructions sur la même ligne (utilisation de ":")
If ActiveCell.Offset(0, 1) = 0 And ActiveCell.Offset(0, 2) = 0 Then
ActiveCell.Offset(0, 1) = "" : ActiveCell.Offset(0, 2) = ""
End If