Nbr de caractère limité + pas d'espaces + suite...

flint6593

XLDnaute Occasionnel
Bonjour à tous!

Je reviens vers vous car j'ai besoin d'un service... Désolé le titre n'est pas claire, mais je ne sais pas faire mieux :rolleyes:

Alors voilà, j'ai un classeur excel, j'ai plusieurs cellules (d'une même colonne à tester) et je dois faire les tests suivants pour savoir si les références ont été rentrées correctements:

- Pas plus de 15 caractères (chiffres et/ou lettres)
- Pas d'espaces dans entre deux caractères
- Plus compliqué: Pas de suite "lettre,-, chiffres" par exemple: 2256K-98L, le K-9 n'est pas correct...

Et mettre la cellule en rouge (ça je sais faire ^^)

Je sais que c'est compliqué... Je maîtrise un peu le vba, mais là c'est au dessus de mes connaissances... Sachant que j'ai environ 8000 références à contrôler...
Si vous pouviez m'aider???? MErci!!!!!!!!!!!!!!
 

Tibo

XLDnaute Barbatruc
Re : Nbr de caractère limité + pas d'espaces + suite...

Bonjour,

Pour être plus clair, peux-tu nous indiquer quels sont les caractères autorisés ?

Seuls les lettres et les chiffres ?

Ou bien certains caractères en plus des lettres et chiffres ?

Par exemple, pour le tiret, peut-il être entre deux lettres, ou deux chiffres ?

A te (re)lire avec quelques précisions.

@+
 

tototiti2008

XLDnaute Barbatruc
Re : Nbr de caractère limité + pas d'espaces + suite...

Bonjour Flint,

en attendant une jolie solution utilisant RegExp de nos amis Staple et JNP, une proposition de fonction en VBA (à mettre dans un module) que tu pourras appeler depuis la feuille de calcul

Code:
Function RefValide(Ref As String) As Boolean
    RefValide = True
    If Len(Ref) > 15 Then RefValide = False
    If Ref Like "* *" Then RefValide = False
    If UCase(Ref) Like "*[A-Z]-#*" Then RefValide = False
End Function

Edit : Bing, Bonjour Tibo :)
 

mth

XLDnaute Barbatruc
Re : Nbr de caractère limité + pas d'espaces + suite...

Bonsoir le fil :) :)

A tout hasard je risque cette formule:

Code:
=SI(OU(NBCAR(A2)>15;NON(ESTERREUR(CHERCHE(" ";A2)));(--ESTNUM(STXT($A2;CHERCHE("-";A2)-1;1)*1)+--ESTNUM(STXT($A2;CHERCHE("-";A2)+1;1)*1))=1);"Mauvais";"OK")

à valider par CTRL MAJ ENTER

Bonne soirée à tous :)

mth
 

job75

XLDnaute Barbatruc
Re : Nbr de caractère limité + pas d'espaces + suite...

Bonjour à tous,

Bravo Mireille pour ta formule, seulement A-B-6 donne OK...

En voici une autre, matricielle à valider par Ctrl+Maj+Entrée :

Code:
=REPT("ERREUR";OU(NBCAR(A2)>15;ESTNUM(TROUVE(" ";A2));ESTNUM(TROUVE(CAR(160);A2));ESTNUM(CHERCHE(CAR(LIGNE($65:$90))&"-"&TRANSPOSE(LIGNE($1:$10))-1;A2))))
Les 2 premières conditions sont évidentes, mais je traite aussi le cas où l'"espace" est le caractère de code 160.

Pour la dernière condition, je fais une recherche de 3 caractères avec une matrice à 2 dimensions pour traiter toutes les combinaisons de lettre-chiffre (matrice 26x10).

Fichier joint.

A+
 

Pièces jointes

  • Controle(1).xls
    25.5 KB · Affichages: 79

flint6593

XLDnaute Occasionnel
Re : Nbr de caractère limité + pas d'espaces + suite...

Désolé de ne répondre que maintenant!

Merci pour la macro... Par contre, pour le reste du travail que je dois faire, je ne peux pas mettre de formules...

Par contre pour la macro, je comprends bien qu'il faut l'appeler, mais je ne sais pas comment ni où... J'ai essayer, mais je n'y arrive pas.
Je met un exemple avec OK ou NON OK par rapport au contenu de la cellule.
Sachant que je dois faire ça en l'incrémentant car j'ai 8000 lignes...

Désolé de ne pas y arriver...

Merci!!!!!!!
 

Pièces jointes

  • tests extract.xls
    18.5 KB · Affichages: 66

job75

XLDnaute Barbatruc
Re : Nbr de caractère limité + pas d'espaces + suite...

Re,

Bien sûr si l'on veut une MFC en colonne A, pas besoin de validation matricielle.

Edit : Bonjour flint6593, pas rafraîchi.

Alors vous ne voulez pas de formule (pourtant la MFC...), tant pis, libre à vous.

Pour la macro, laissons tototiti vous répondre.

A+
 

Pièces jointes

  • Controle(2).xls
    25.5 KB · Affichages: 95
  • Controle(2).xls
    25.5 KB · Affichages: 98
  • Controle(2).xls
    25.5 KB · Affichages: 104
Dernière édition:

tototiti2008

XLDnaute Barbatruc
Re : Nbr de caractère limité + pas d'espaces + suite...

Bonjour à tous,

Car en fait pour des raisons pratiques je ne peux pas utiliser de formules...
Il serait intéressant de savoir pourquoi....
En fait, ce que j'ai proposé est une formule appelant du VBA (Fonction personnalisée)

sur le principe de départ, il faut mettre le code dans un module puis la taper dans la feuille de calcul
=RefValide(A1)

une correction pour les espaces en début et fin de chaine :

Code:
Function RefValide(Ref As String) As Boolean
    RefValide = True
    If Len(Ref) > 15 Then RefValide = False
    If Ref Like "*? ?*" Then RefValide = False
    If UCase(Ref) Like "*[A-Z]-#*" Then RefValide = False
End Function
 

flint6593

XLDnaute Occasionnel
Re : Nbr de caractère limité + pas d'espaces + suite...

En fait je ne peux pas mettre de formules car c'est un fichier qui à plus ou moins long terme sera utilisé par d'autres personnes de mon boulot, pour vérifier qu'il n'y a pas d'erreur d'écriture dans les références tapées...
Donc je fais une interface avec un userform. Et j'utilise les macros en les appelants avec les USF...

Je vais essayer votre solution. Désolé j'ai eu un peu de mal à comprendre (réveil difficile ^^)
Je test! Merci
 

flint6593

XLDnaute Occasionnel
Re : Nbr de caractère limité + pas d'espaces + suite...

Je viens d'essayer, mais je n'arrive pas à le faire fonctionner...
Comment est-ce que je met ma chaîne de caractère dans Ref pour pouvoir le tester?
Voilà ce que je pensais mais que je ne sais pas faire:

i = 1
j = 10
nbl = Range("B10").End(xlDown).Row

While j <> nbl

Ref= ma chaîne de caractère de la cells(i,j) '??????
Call RefValide
y = RefValide


If y = False Then
With Cells(i, j).Interior
.ColorIndex = 3
.Pattern = xlSolid
End With
With Cells(i, 9).Interior
.ColorIndex = 3
.Pattern = xlSolid
End With

j = j + 1
Wend


Merci!!!!!
 

flint6593

XLDnaute Occasionnel
Re : Nbr de caractère limité + pas d'espaces + suite...

Merci!

Par contre je ne comprends pas pourquoi mais il ne reconnaît pas la cellule en position cells(i,j) où j'incrémente j.
Il considère j comme la colonne j pas une valeur de variable...

Merci dans tous les cas!!!!!!
 

Pierrot93

XLDnaute Barbatruc
Re : Nbr de caractère limité + pas d'espaces + suite...

Bonjour,

dans ton exemple j est une variable qui représente l'argument colonne de la propriété "cells".

A noter qu'eele correspond à la colonne J lorsqu'elle est égale à 10 comme lorsque tu l'initialises...
l
bon après midi
@+
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 765
Messages
2 091 892
Membres
105 084
dernier inscrit
lca.pertus