validation de donnée

angoul

XLDnaute Impliqué
Bonsoir j'ai besoin de vos petite lumiere
j'aimerai mettre sur une cellule M1 à M100 une validation de donnée
c'est dire que si la personne met un X, alors cela renvoi en debut de ligne suivant
par contre si il met une autre lettre ou rien alors cela affiche un message

merci de votre aide
 

angoul

XLDnaute Impliqué
Re : validation de donnée

j'ai mis cela
mais cela fait rien cette fois

Dim Cel
Dim Mes
Dim I As Byte
Mes = Array("Manque le nom", "Manque le prénom", "Manque la catégorie", _
"Manque le N° de licence", "Manque le sexe", "Manque le poids", _
"Manque Taille", "Manque date de naissance")
Cel = Array("C", "D", "E", "F", "G", "H", "I", "J")
If Target.Count > 1 Then Exit Sub
If Target = "" Then Exit Sub
If Not Intersect(Range("M12:M100"), Target) Is Nothing Then
For I = 0 To UBound(Cel)
If Range(Cel(I) & Target.Row) = "" Then
Application.EnableEvents = False
Target.ClearContents
Application.EnableEvents = True
MsgBox Mes(I)
Exit Sub
End If
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("M12:M100")) Is Nothing Then
Dim ligne As Long
ligne = Target.Row
If Target.Value = "x" Then
Cells(ligne + 1, 1).Select
Else
MsgBox ("Veuillez remplir cette cellule")
End If
Next I
End If
End Sub
 

angoul

XLDnaute Impliqué
Re : validation de donnée

Voila j'ai modifier et toujour aucun resultat
et j'ai la premiere ligne en jaune

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cel
Dim Mes
Dim I As Byte
Mes = Array("Manque le nom", "Manque le prénom", "Manque la catégorie", _
"Manque le N° de licence", "Manque le sexe", "Manque le poids", _
"Manque Taille", "Manque date de naissance")
Cel = Array("C", "D", "E", "F", "G", "H", "I", "J")
If Target.Count > 1 Then Exit Sub
If Target = "" Then Exit Sub
If Not Intersect(Range("M12:M100"), Target) Is Nothing Then
For I = 0 To UBound(Cel)
If Range(Cel(I) & Target.Row) = "" Then
Application.EnableEvents = False
Target.ClearContents
Application.EnableEvents = True
MsgBox Mes(I)
End If
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("M12:M100")) Is Nothing Then
Dim ligne As Long
ligne = Target.Row
If Target.Value = "x" Then
Cells(ligne + 1, 1).Select
Else
MsgBox ("Veuillez remplir cette cellule")
End If
End Sub

je comprend cela me fatigue, surtout que j'ai pas assez de connaissance pour comprendre
 

Pierrot93

XLDnaute Barbatruc
Re : validation de donnée

Re,

regarde ceci, à placer dans le module de la feuille, seule 1 procédure "change" doit être présente :
Code:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Or Target.Value = "" Then Exit Sub
If Not Intersect(Range("M12:M100"), Target) Is Nothing Then
    Application.EnableEvents = False
    If WorksheetFunction.CountA(Cells(Target.Row, 3).Resize(1, 8)) < 8 Then Target.ClearContents
    Application.EnableEvents = True
    If Target.Value = "x" Then Cells(Target.Row + 1, 1).Select
End If
End Sub

Edition : attention dans ton fichier de très nombreuses cellules fusionnées, pas bon ménage avec vba...
 

angoul

XLDnaute Impliqué
Re : validation de donnée

cela ne fait rien, en plus sa me creer une erreur sur le module 1 pour la creation de la ligne

ne peut tu pas regarder a mon fichier et le modifier. je c'est que c'est pas l'esprit, qu'il faut mettre la mains a la pate, mais la je comprend plus rien
 

angoul

XLDnaute Impliqué
Re : validation de donnée

merci pierrot c'est sympa, mais helas il me donne plus le nom ou il y a un manque de saisie, en plus cela beug quand je clique sur ajouter une ligne, quand on valide la saisie cela revient pas en debut de ligne

mais je te remercie de ton temps et veut plus abuser de toi
 

Pierrot93

XLDnaute Barbatruc
Re : validation de donnée

Re,

pour le bogue lors de l'insertion, modifie comme suit :
Code:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
If Not Intersect(Range("M12:M100"), Target) Is Nothing Then
    Application.EnableEvents = False
    If WorksheetFunction.CountA(Cells(Target.Row, 3).Resize(1, 8)) < 8 Then _
        Target.ClearContents: MsgBox "manque une donnée..."
    Application.EnableEvents = True
    If Target.Value = "x" Then Cells(Target.Row + 1, 1).Select
End If
End Sub
 

Pierrot93

XLDnaute Barbatruc
Re : validation de donnée

Re,

pour la selection, c'est cette partie qu'il faut modifier :
Code:
Cells(Target.Row + 1, 1).Select

en l'état sélectionne la colonne 1, ligne sous celle cliquée...

pour rester sur la même ligne :
Code:
Cells(Target.Row, 1).Select
 

Pierrot93

XLDnaute Barbatruc
Re : validation de donnée

Re,

avec le bon message :

Code:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
If Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
If Not Intersect(Range("M12:M100"), Target) Is Nothing Then
    If WorksheetFunction.CountA(Cells(Target.Row, 3).Resize(1, 8)) < 8 Then
        Application.EnableEvents = False
        Target.ClearContents
        Application.EnableEvents = True
        For Each c In Cells(Target.Row, 3).Resize(1, 8)
            If IsEmpty(c) Then MsgBox "manque : " & Cells(11, c.Column).Value
        Next c
    End If
    If Target.Value = "x" Then Cells(Target.Row, 1).Select
End If
End Sub
 

angoul

XLDnaute Impliqué
Re : validation de donnée

MERCI PIERROT, mais je doit envoyer le fichier a 17h15, a mon responsable. Je pense que je vait le laisser comme sa, car pour etre honete, je ne comprend pas ce que je fait et cela est fatiguant. de faire et rien comprendre
 

Discussions similaires

Statistiques des forums

Discussions
312 770
Messages
2 091 946
Membres
105 118
dernier inscrit
XDL84