Effacer ligne selon numéro de série en colonne A

Bonjour!

J'ai une macro qui est censée effacer des lignes (effacer la valeur des cellules de la ligne, et non pas effacer la ligne).

On écrit le numéro de série qui se trouve en colonne A, et la ligne s'efface.

Comme ça efface aussi le numéro en colonne A, il y a une macro qui "tire vers le bas" depuis la premiere ligne (qui ne s'efface jamais) la formule qui inscrit automatiquement le numéro de série.

Au début tout fonctionnait et puis soudain maintenant, ça ne fait rien. Aucun bug mais aussi aucun effet.

Seulement si on essaie d'effacer la ligne 1, on reçoit le message voulu, ou si on presse sur OK en n'ayant rien inscrit comme ligne à effacer, on reçoit aussi le message voulu selon la macro.

Donc je suppose que le problème se situe dans la partie qui est censèe agir sur l'effacement des lignes; ie:

Sub deleterow()
Dim i As Integer
Dim Editeur As Variant

    Editeur = InputBox("Veuillez indiquer le numéro de l'hôtel à supprimer", "Supprimer", " ")

'la valeur saisie est transmise à la variable Editeur
With ThisWorkbook.Sheets("hotels ")

            For i = .Range("a" & .Rows.Count).End(xlUp).Row To 2 Step -1
                        If .Range("a" & i).Value = Editeur Then

    Rows(i).ClearContents
    End If
   Next i
End With

End Sub

Je vous mets aussi le code complet, et je vous joins le fichier.

Merci d'avance à ceux ou celles qui pourront m'aider à résoudre ce petit problème

Sub deleterow()
Dim i As Integer
Dim Editeur As Variant

    Editeur = InputBox("Veuillez indiquer le numéro de l'hôtel à supprimer", "Supprimer", " ")

If Editeur = 1 Then
MsgBox "Vous ne pouvez effacer cette ligne! L'opération est avortée."

Exit Sub
Else
End If

If (Editeur = " " Or Editeur = 0) Then
MsgBox "Vous n'avez choisis aucun hôtel à effacer. L'opération est avortée."

Exit Sub
Else
End If

'la valeur saisie est transmise à la variable Editeur
With ThisWorkbook.Sheets("hotels ")

            For i = .Range("a" & .Rows.Count).End(xlUp).Row To 2 Step -1
                        If .Range("a" & i).Value = Editeur Then

    Rows(i).ClearContents
    End If
   Next i
End With

Call Fill_Down
Call SortDataWithoutHeader

End Sub
10essai.xlsm (31.80 Ko)

Bonjour,

La valeur saisie dans l'inputbox est une chaine de caractères et la valeur retournée par .Range("a" & i).Value est numérique . La comparaison des deux est donc toujours fausse ( et je ne vois pas comment ça a pu fonctionner ...)

juste avant la ligne

With ThisWorkbook.Sheets("hotels ")

rajouter:

Editeur = CInt(Editeur) ' conversion chaine en integer

On pourrait aussi faire l'inverse : convertir la donnée lue en chaine.

A+

Bonjour,

Je m'étais également intéressé à ton problème et te soumets une solution moins élégante, mais plus concise

Ajoute un *1 à ton Editeur sur cette ligne :

If .Range("a" & i).Value = Editeur * 1 Then

Amicalement.

Bonjour à tous,

Une version (partiellement modifiée) à tester ...

Cordialement.

7algoplus.xlsm (32.19 Ko)

merci a vous tous!!!

Rechercher des sujets similaires à "effacer ligne numero serie colonne"