Si cellule contient #, vider contenu

faisdlair Messages postés 171 Date d'inscription vendredi 19 janvier 2018 Statut Membre Dernière intervention 31 décembre 2023 - 31 déc. 2023 à 00:27
danielc0 Messages postés 849 Date d'inscription mardi 5 juin 2018 Statut Membre Dernière intervention 9 mai 2024 - 31 déc. 2023 à 19:11

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

danielc0 Messages postés 849 Date d'inscription mardi 5 juin 2018 Statut Membre Dernière intervention 9 mai 2024 75
Modifié le 31 déc. 2023 à 09:29

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
faisdlair Messages postés 171 Date d'inscription vendredi 19 janvier 2018 Statut Membre Dernière intervention 31 décembre 2023 6
31 déc. 2023 à 14:14

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
danielc0 Messages postés 849 Date d'inscription mardi 5 juin 2018 Statut Membre Dernière intervention 9 mai 2024 75
31 déc. 2023 à 16:48

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
faisdlair Messages postés 171 Date d'inscription vendredi 19 janvier 2018 Statut Membre Dernière intervention 31 décembre 2023 6
31 déc. 2023 à 16:57

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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
danielc0 Messages postés 849 Date d'inscription mardi 5 juin 2018 Statut Membre Dernière intervention 9 mai 2024 75
Modifié le 31 déc. 2023 à 19:13

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