Continuation d'une macro malgré une "valeur non trouvée"

Résolu/Fermé
jmnexcelpas Messages postés 2 Date d'inscription jeudi 21 septembre 2017 Statut Membre Dernière intervention 21 septembre 2017 - 21 sept. 2017 à 15:26
jmnexcelpas Messages postés 2 Date d'inscription jeudi 21 septembre 2017 Statut Membre Dernière intervention 21 septembre 2017 - 21 sept. 2017 à 17:06
Bonjour,
Je cherche à remplacer les cellules vides de chaque tableau figurant sur chaque feuille par un point. Il y a donc un tableau de données par feuille.
J'ai créé la macro suivante qui fonctionne jusqu'à ...

Sub remplcelvide()
For sh_index = 1 To Sheets.Count
Sheets(sh_index).Select
Range("A1").Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.Replace What:="", Replacement:=".", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Next sh_index
End Sub

... jusqu'à ce qu'un tableau ne comporte pas de cellule vide ! Et c'est la qu'est l'os, parceque le message n'est pas "une erreur" mais bien qu'aucune valeur n'a été trouvée dans ce tableau. En clair : il n'y a pas de cellule vide. Et patatra, la macro s'arrête.

J'ai bien trouvé comment contourner une "erreur", par : "On Error GoTo ErrorHandler" mais dans mon cas, je dois juste passer à la feuille suivante si la macro ne trouve pas de cellule vide. Et je ne parviens pas à adapter ma macro pour y arriver.

Un conseil ou une solution ? Je vous remercie déjà pour votre aide.

1 réponse

via55 Messages postés 14495 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 7 novembre 2024 2 734
21 sept. 2017 à 16:57
Bonjour

Remplace ta macro par celle-ci :
Sub remplcelvide()
For sh_index = 1 To Sheets.Count
Sheets(sh_index).Select
plage = ActiveSheet.UsedRange.Address
    If Application.WorksheetFunction.CountBlank(Range(plage)) > 0 Then
    Selection.SpecialCells(xlCellTypeBlanks).Select
    Selection.Replace What:="", Replacement:=".", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
    End If
Next sh_index
End Sub


ActiveSheet.UsedRange.Address donne l'adresse de la plage utilisée dans la feuille
Si le nombre de cellules vides dans cette plage est >0 on applique la procédure de remplacement

Cdlmnt
Via
0
jmnexcelpas Messages postés 2 Date d'inscription jeudi 21 septembre 2017 Statut Membre Dernière intervention 21 septembre 2017
21 sept. 2017 à 17:06
Un tout grand merci "via55". Ca fonctionne très bien.
0