Si cellule contient #, vider contenu

faisdlair Messages postés 171 Date d'inscription   Statut Membre Dernière intervention   -  
danielc0 Messages postés 2176 Date d'inscription   Statut Membre Dernière intervention   -

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. danielc0 Messages postés 2176 Date d'inscription   Statut Membre Dernière intervention   286
     

    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
  2. faisdlair Messages postés 171 Date d'inscription   Statut Membre Dernière intervention   6
     

    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
  3. danielc0 Messages postés 2176 Date d'inscription   Statut Membre Dernière intervention   286
     

    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
  4. faisdlair Messages postés 171 Date d'inscription   Statut Membre Dernière intervention   6
     

    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. danielc0 Messages postés 2176 Date d'inscription   Statut Membre Dernière intervention   286
     

    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