Création d'un script vériffiant les donnés. [Résolu]

Messages postés
24
Date d'inscription
vendredi 5 octobre 2018
Statut
Membre
Dernière intervention
23 novembre 2018
- - Dernière réponse : Elhyra
Messages postés
24
Date d'inscription
vendredi 5 octobre 2018
Statut
Membre
Dernière intervention
23 novembre 2018
- 9 oct. 2018 à 14:04
Bonjour,

Voilà, cela fait maintenant quelques jours que j'essaye de créer une sorte de petit .exe ou une macro afin de vérifier toute une colonne à l'aide de conditions. Je cherche à faire un éxécutable ou un fichier qui serait réutilisable .Cela me ferait gagner un temps fou lors de la vérifications des donnés dans un tableau pour voir si il est bien remplie. Je m'explique :

J'aimerais créer un script qui fait que lorsque l'on clique dessus cela nous montre un message d'erreur avec le numéro de la ligne fausse, entouré ou surligné en rouge de préférence.

Exemple :





J'aimerais par exemple créer cela : Si la colonne B désignation contient plus de 20 caractères, alors surligner la ligne concerné et ouvrir une box affichant la ligne erroné. Ou bien, Si la colonne C Prix 1 contient des caractères $-€ etc.. alors surligner la ligne en rouge ouvrir une box et ainsi de suite.



Attention, je connais déjà la validation de données, et ce n'est pas ce que je veux. Je cherche une sorte de validation de données mais qu'on exécute et qui est sauvegardable sous forme de fichier.

Je n'ai pas besoins d'une solution avec un code tout fait, simplement d'une base et d'un exemple pour me repérer par la suite et le reproduire.

Merci d'avoir pris connaissance de ma requête, en vous souhaitant une bonne journée !
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
6220
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
21 septembre 2019
390
1
Merci
Bonjour,

Je n'ai pas besoins d'une solution avec un code tout fait

C'est très bien.

Voir ceci pour faire une recherche dans une colonne:

https://www.commentcamarche.com/faq/36886-vba-recherche-de-donnees-la-methode-find

et cela pour connaitre le nombre de caractères d'une cellule:

https://silkyroad.developpez.com/VBA/ManipulerChainesCaracteres/#LI-A

pour mettre une ligne en couleur sers-toi de l'enregistreur de macro, tu auras ton code

voilà et bon courage

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 59790 internautes nous ont dit merci ce mois-ci

Elhyra
Messages postés
24
Date d'inscription
vendredi 5 octobre 2018
Statut
Membre
Dernière intervention
23 novembre 2018
-
Merci de ta réponse rapide Je vais voir tout cela et essayez de faire quelque chose avec. Je laisse le sujet en non-résolue pour le moment, au cas ou j'aurais un soucis durant mes recherches.

Bonne journée à toi !
cs_Le Pivert
Messages postés
6220
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
21 septembre 2019
390 -
A ta disposition, pas de problème pour de nouvelles questions!

un excellent tuto pour démarrer:

https://www.excel-pratique.com/fr/vba/premiere_macro.php


@+
Elhyra
Messages postés
24
Date d'inscription
vendredi 5 octobre 2018
Statut
Membre
Dernière intervention
23 novembre 2018
-
Hello,

J'ai passé le week-end à essayé de trouver quelque chose sans jamais tomber sur quelque chose de bon, si jamais tu as une idée, un exemple de code ou bien si une personne l'a je serais preneur pour m'en inspirer !

Encore merci !
Commenter la réponse de cs_Le Pivert
Messages postés
24
Date d'inscription
vendredi 5 octobre 2018
Statut
Membre
Dernière intervention
23 novembre 2018
0
Merci
Bonjour,

Up ! Après avoir passé le week-end à essayer quelque chose je suis toujours sur une mauvaise piste, si jamais quelqu'un à une idée, je suis preneur !

Bonne journée à vous !
cs_Le Pivert
Messages postés
6220
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
21 septembre 2019
390 -
Si tu fais la même recherche dans les colonnes C et D tu peux remplacer les 2 macros par une seule, comme ceci:

Sub bouclecolonneCD()
Dim FL1 As Worksheet, Cell As Range, Plage As Range
Dim Var As String, derniereLigne As Long
 derniereLigne = Range("D" & Rows.Count).End(xlUp).Row
    Set FL1 = Worksheets("Feuil1")
    With FL1
        'Détermination de la plage de cellules à lire
        'Peut s'écrire en utilisant l'objet range de la plage
        'For Each Cell In .Range("B3:E15")
 
        'ou en utilisant l'objet Plage (range) de la plage
        Set Plage = .Range("C1:D" & derniereLigne)
        For Each Cell In Plage
  'Valeur de la cellule lue
            Var = Cell.Value
            If IsNumeric(Var) Then
Else
Rows(Cell.Row & ":" & Cell.Row).Font.Color = RGB(255, 0, 0) 'rouge
MsgBox "ligne a trouvé"
End If
        Next
    End With
    Set FL1 = Nothing
    Set Plage = Nothing
End Sub


@+
Elhyra
Messages postés
24
Date d'inscription
vendredi 5 octobre 2018
Statut
Membre
Dernière intervention
23 novembre 2018
> cs_Le Pivert
Messages postés
6220
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
21 septembre 2019
-
Merci grandement de ton aide, mon problème est résolue ! En te souhaitant une bonne journée et encore une fois un grand merci !
Elhyra
Messages postés
24
Date d'inscription
vendredi 5 octobre 2018
Statut
Membre
Dernière intervention
23 novembre 2018
> cs_Le Pivert
Messages postés
6220
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
21 septembre 2019
-
Hum, une dernière question pour la route. Est-ce qu'il serait possible de mettre dans le message box d'erreur la ligne d'erreur exacte ? Du style "ligne trouvé 450" ?
cs_Le Pivert
Messages postés
6220
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
21 septembre 2019
390 -
bien sur comme ceci:

MsgBox "ligne trouvée " & Cell.Row


ou comme cela selon:

MsgBox "ligne trouvée " & NoLig


il faut faire travailler tes méninges!
LOL

@+
Elhyra
Messages postés
24
Date d'inscription
vendredi 5 octobre 2018
Statut
Membre
Dernière intervention
23 novembre 2018
> cs_Le Pivert
Messages postés
6220
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
21 septembre 2019
-
Merci bien, j'y avais pensé au NoLig justement mais le Cell.Row ne marche pas, par exemple sur cet exemple :

Sub bouclecolonneB()
FL1 = Worksheets("Feuil1")
NoCol = 2 'lecture de la colonne B
For NoLig = 1 To Split(FL1.UsedRange.Address, "$")(4)
Var = FL1.Cells(NoLig, NoCol)
If Len(Var) > 50 Then
Rows(NoLig & ":" & NoLig).Font.Color = RGB(255, 0, 0) 'rouge
MsgBox("La colonne désignation est éronnée.") & Cell.Row
End If
Next
FL1 = Nothing
End Sub


La fonction n'est pas reconnue
Commenter la réponse de Elhyra