Format de numérotation entre deux colonnes

Fermé
Jean - Modifié par Jean le 1/05/2016 à 05:25
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 2 mai 2016 à 23:20
Bonjour a tous!
.
.
Apres tant d'années a suivre les nouvelles et le forum CCM, je saute le pas et écris mon tout premier message sur ce forum. Me voici tout émus!
.
.
Je viens a vous aujourd'hui car j'essaye de mettre au point une base de données sur Excel qui va être remplie par bon nombre d'utilisateurs. Une premiere recherche sur le sujet s'est montrée infructueuse, je me permet donc de publier ce petit post :)
.
.
Mon projet est le suivant; on demande aux utilisateurs - des courtiers en assurance -, de remplir deux colonnes sur une feuille Excel; un numéro de police d'assurance "A" auquel correspond un numéro de réclamation "B".
Les utilisateurs utilisent des systèmes de gestion de sinistres différents et le format des numéros de police/réclamation peuvent varier.
.
.
Pour éviter les erreurs de saisie (un chiffre en trop, en moins, une lettre a la place du chiffre, etc...), je souhaiterai mettre en place une règle qui permet de vérifier qu'a une valeur "A" ne peuvent correspondre qu'un certain nombre de valeurs "B".
.
.
Exemple 1:
Colonne A (Police)
"000#####" (8 chiffres, commençants par "000")
Colonne B (Réclamation)
"01########" (10 chiffres, commençants par "01")
ou
"009#######" (10 chiffres, commençants par "009")
.
.
Exemple 2:
Colonne A (Police)
"TG#######" (lettres "TG" suivie de 7 chiffres libres)
Colonne B: (Réclamation)
"4######" (7 chiffres commençants par "4")
ou
"3######" (7 chiffres commençants par "3)
.
.
Exemple 3:
Colonne A (Police)
"N000#####" (lettre "N", suivie de trois "0" puis 5 chiffres libres)
ou
"U9######" (lettre "U" suivie de "9" puis 6 chiffres libres)
ou
"MM#####" (lettres "MM" suivies de 5 chiffres libres).
Colonne B (Reclamation)
"1#####" (6 chiffres commençants par "1")
ou
"2#####" (6 chiffres commençants par "2")
.
.
Si A et B ne sont pas compatibles, la cellule remplie devient rouge et laisse apparaitre un message lorsque l'utilisateur passe son curseur dessus; "etes vous certain de cette valeur?". L'utilisateur peut alors confirmer en cliquant sur le cellule; celle ci redevient blanche pour indiquer que la valeur a étés vérifiée et validée.
Apres, si vous avez un système de validation plus simple a proposer, je suis preneur lol.
.
.
Voili voilou, j'ai quelques base avec excel et il me semble que ces conditions sont realisables sans faire appel au VBA.
.
.
Connaitriez vous des formules simples a mettre en place pour realiser cette feuille Excel?
.
.
Merci d'avance !
.
.
Jean
A voir également:

3 réponses

DjiDji59430 Messages postés 4170 Date d'inscription samedi 19 avril 2008 Statut Membre Dernière intervention 6 janvier 2025 682
1 mai 2016 à 11:13
Bonjour,

"Apres tant d'années a suivre les nouvelles et le forum CCM, je saute le pas et écris mon tout premier message sur ce forum. Me voici tout ému!"

Et apres tant d'années, t'as pas remarqué qu'on donnait toujours un fichier-test, avec ce que tu demandes rempli a la main et les explications y afférentes ??


1) Tu vas dans https://www.cjoint.com/
2) Tu cliques sur [Parcourir] pour sélectionner ton fichier
3) Tu descends en bas de la page pour cliquer sur [Créer le lien Cjoint]
4) Au bout de quelques secondes s'affiche le lien en bleu souligné ; tu le sélectionnes et tu fais "Copier"
5) Tu reviens dans la discussion, et, dans ton message de réponse, tu fais : "Coller".

Cordialement.
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 249
1 mai 2016 à 13:07
Bonjour,

Sans vba ça parait difficile, la MFC ne pourra pas s'enlever toute seule si l'utilisateur confirme la saisie.
Donc tant qu'à faire autant tout faire en vba.
Je m'en suis tenu strictement à la demande. Essaie déjà avec ça, ensuite recense les fonctionnements particuliers que tu voudrais ajouter. Par exemple le n° de police change, recontrôler la validité du n° de récla. Essaie d'être exhaustif du premier coup, les uns ayant une influence sur les autres...
https://www.cjoint.com/c/FEbldSDHdRc
eric
0
CurbisToronto Messages postés 1 Date d'inscription vendredi 29 avril 2016 Statut Membre Dernière intervention 2 mai 2016
Modifié par CurbisToronto le 2/05/2016 à 21:05
Bonjour a vous deux, et merci encore pour votre vitesse de réponse!
.
Merci spécialement a toi eriiic pour le temps que tu as passé sur le sujet. Ton fichier correspond exactement a ce que je souhaite réaliser!
.
N'ayant que des connaissances très restreintes en VBA, je n'ai compris qu'une partie du code que tu as inclus dans le fichier excel. J'ai tenté de le modifier puis de l'inclure dans ma feuille de travail, mais celui ci ne fonctionne pas comme je le souhaiterai.
.
Comme demande, je te joins un sample de ma feuille de données:
https://www.cjoint.com/c/FEcsSLhII0K
.
D’après vous, quelle partie du code-source dois-je modifier afin que celui-ci s'applique même lorsque je décale le début de ma liste de quelques quelques colonnes/lignes? (# de police en H5 et # de réclamation en J5)
.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim pl As Range, c As Range
Dim valid, lig As Long, col As Long, ok As Boolean
.
Set pl = Intersect(Target, [A:B])
If pl Is Nothing Then Exit Sub
valid = Sheets("Valid").[A1].CurrentRegion.Value
For Each c In pl
If c.Row = 1 Then Exit Sub
Select Case c.Column
Case 1 ' Police
For col = 2 To UBound(valid, 2)
If valid(2, col) <> "" Then
ok = c Like valid(2, col)
If ok Then Exit For
End If
Next col
c.Interior.Color = IIf(ok, xlNone, vbRed)
Case 2 ' Récla
For col = 2 To UBound(valid, 2)
If valid(2, col) <> "" Then
ok = c.Offset(, -1) Like valid(2, col)
If ok Then Exit For
End If
Next col
If ok Then
For lig = 3 To UBound(valid, 1)
ok = c Like valid(lig, col)
If ok Then Exit For
Next lig
End If
c.Interior.Color = IIf(ok, xlNone, vbRed)
End Select
Next c
End Sub
.
Merci encore pour votre aide! Ça me donne envie d'en savoir encore plus sur la programmation en VBA :)
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 249
2 mai 2016 à 23:20
Bonjour,

Le code doit être mis dans le module de la feuille concernée.
J'ai dû reprendre la structure vu que n° police et récla étaient inversé, et en plus séparés d'une colonne.
C'est une très mauvaise habitude de séparer les colonnes par des colonnes vides, tu devrais t'en débarrasser au plus vite. Pour excel ça n'est plus une base de données valide. Non seulement ça complique le code mais en plus tu te prives de toutes les facilités d'excel pour analyser les données (TCD, tableaux, etc)
http://www.xlerateur.com/divers/2010/05/14/les-13-regles-d%E2%80%99or-pour-utiliser-excel-comme-gestionnaire-de-donnees-612/

J'ai changé un peu le principe.
Le n° de Récla n'est contrôlé que si le n° de police est valide. Apparait en jaune si le contrôle n'a pu avoir lieu.
J'ai mis 3 constantes au début pour faciliter l'adaptation :
Const colPolice As Long = 10
Const colRecla As Long = 8
Const lig1 = 5    ' 1ère ligne de données

https://www.cjoint.com/c/FEcvsCEm8TB
eric
0