Si cellule contient #, vider contenu

Bonjour,

Est-ce que quelqu'un peut m'aider pour trouver le code vba pour Excel

SI les cellules de la plage K4 a K400 contiennent soit un chiffre ou un caractère autre qu'une lettre, effacer le contenu des cellules

Merci,


Windows / Edge 120.0.0.0

5 réponses

  1. J'ai fait les tests, avec une liste de test. Envoie-moi la liste qui te sert pour les tests. Non, il faut ajouter les caractères que je n'ai pas mis sur la ligne :

    Const Tabl = "abcçdefghijklmnopqrstuvwxyzéèëêôöâäûü-"

    Si, par exemple tu as un prénom avec un O barré, une tilde ou quoi que soit d'autre.

    Daniel

    PS. Rajoute le "ç".


    0
    1. Bonjour Daniel,

      Rien a  changé, tout disparait aussi. Tu dis avec les prénoms, donc je dois ajouter tous les prénoms a la liste ? 

      0
      1. Essaie :

        Sub test()
        Const Tabl = "abcdefghijklmnopqrstuvwxyzéèëêôöâäûü'-"
        Dim C As Range, Teste As Boolean, L As String, I As Long
        For Each C In Range("K4:K400")
          For I = 1 To Len(C.Value)
            L = Mid(LCase(C.Value), I, 1)
            If InStr(1, Tabl, L) = 0 Then
              C.Value = ""
              Exit For
            End If
          Next I
        Next C
        End S

        Au besoin, rajoute des lettres accentuées. Avec les prénoms, l'imagination est au pouvoir. J'ai aussi ajouté l'apostrophe.

        Daniel


        0
        1. Bonjour Daniel, merci pour le retour et le code VBA

          Votre code ne fonctionne pas bien. A la colonne K, j'ai des noms complets (exemple SERGE RICHARD, ÉTIENNE LEMAIRE, JEAN-PIERRE FORTIN), et suite au lancement de la macro, tous les noms complets s'efface aussi. Faire attention, il y a des accents et des traits d'union a conserver

          Le genre d'information que je veux qui s'efface est comme suit

          #BES152278

          #783728505

          2A9A2A310MC214269

          Mais tout ce qui contient des lettres seulement, ne doit pas s'effacer

          Merci et bonne journée,

          0
          1. Bonjour,

            Le code suivant efface la plage si une cellule est vide.  Essaie :

            Sub test()
            Const Tabl = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLLMNOPQRSTUVWXYZ"
            Dim C As Range, Teste As Boolean, L As String, I As Long
            For Each C In Range("K4:K400")
              If C <> "" Then
                For I = 1 To Len(C.Value)
                  L = Mid(C.Value, I, 1)
                  If InStr(1, Tabl, L) = 0 Then
                    [K4:K400] = ""
                    Exit Sub
                  End If
                Next I
              Else
                [K4:K400] = ""
                Exit Sub
              End If
            Next C
            End Sub
            

            Daniel


            0