Microsoft 365 VBA TEST NB DE CARACTERE DANS LES CELLULES PLAGE VARIABLE

  • Initiateur de la discussion Initiateur de la discussion chris6999
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

chris6999

XLDnaute Impliqué
Bonjour

Depuis hier je cherche le code me permettant de tester sur une plage le nombre de caractères contenus dans les cellules d'une plage variable.

Mon besoin est le suivant :
2 colonnes A et B
Pour chaque colonne, la plage à balayer partirait de la dernière ligne non vide jusqu'à la ligne 10.
Test à réaliser : pour chaque cellule de la plage vérifier que le nombre de caractères est égal à la valeur mentionnée ligne 2 (col A 14 caractères attendus, 15 pour la colonne B).

Si le nb attendu n'est pas atteint dans une cellule mettre en surbrillance les cellules incorrectes

Je mets un fichier test en PJ en espérant que vos neurones seront plus efficaces que les miens ...
Merci par avance pour vos réponses.
 

Pièces jointes

Bonjour

Pourquoi ne pas mettre mettre une validation et afficher les cercles entourant les données non valides ?
A noter que ta 1ère colonne contient 15 caractères partout sauf 1 cellule et idem pour la seconde

Également possible par MFC
 
Dernière édition:
Bonjour chris6999, chris, Le forum.

une Solution :
VB:
Sub test()
Dim FD As Worksheet
    Set FD = Worksheets(ActiveSheet.Name)
Dim TbBis(1 To 2) As Variant
        TbBis(1) = FD.Range("A10:B" & FD.Range("B1048576").End(xlUp).Row).Value
    Set TbBis(2) = FD.Range("A10:B" & FD.Range("B1048576").End(xlUp).Row)
' Suppression de la surbrillance
        TbBis(2).Interior.Pattern = xlNone
    For i = LBound(TbBis(1), 1) To UBound(TbBis(1), 1)
        If Len(TbBis(1)(i, 1)) <> 14 Then
            TbBis(2)(i, 1).Interior.Color = 65535
        End If
        If Len(TbBis(1)(i, 2)) <> 15 Then
            TbBis(2)(i, 2).Interior.Color = 65535
        End If
    Next i
' Libére la mémoire
    Erase TbBis
    Set FD = Nothing
    Calc1 = Empty: Calc2 = Empty
End Sub
 
Bonjour

Pourquoi ne pas mettre mettre une validation et afficher les cercles entourant les données non valides ?
A noter que ta 1ère colonnes contient 15 caractères partout sauf 1 cellule et idem pour la seconde

Également possible par MFC

Bonjour

J'ai déjà des validations prévue lorsque les données sont saisies directement dans le fichier.
Ma préoccupation c'est pour le mode copier coller ...
Mais pourquoi pas je vais creuser l'idée.
Merci
 
Bonjour chris6999, chris, Le forum.

une Solution :
VB:
Sub test()
Dim FD As Worksheet
    Set FD = Worksheets(ActiveSheet.Name)
Dim TbBis(1 To 2) As Variant
        TbBis(1) = FD.Range("A10:B" & FD.Range("B1048576").End(xlUp).Row).Value
    Set TbBis(2) = FD.Range("A10:B" & FD.Range("B1048576").End(xlUp).Row)
' Suppression de la surbrillance
        TbBis(2).Interior.Pattern = xlNone
    For i = LBound(TbBis(1), 1) To UBound(TbBis(1), 1)
        If Len(TbBis(1)(i, 1)) <> 14 Then
            TbBis(2)(i, 1).Interior.Color = 65535
        End If
        If Len(TbBis(1)(i, 2)) <> 15 Then
            TbBis(2)(i, 2).Interior.Color = 65535
        End If
    Next i
' Libére la mémoire
    Erase TbBis
    Set FD = Nothing
    Calc1 = Empty: Calc2 = Empty
End Sub


Bonjour et merci pour la proposition. Je m'en vais tester tout ça..
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
723
Réponses
3
Affichages
523
Retour