Bonsoir tout le monde ,
SVP , je veux une macro qui réalisera pour ce tableau dans n'importe quelle ligne de ce tableau si la personne remplit plus d'une case alors
MsgBox "Error, veuillez remplir une seule case"
Merci d'avance![]()
Bonsoir tout le monde ,
SVP , je veux une macro qui réalisera pour ce tableau dans n'importe quelle ligne de ce tableau si la personne remplit plus d'une case alors
MsgBox "Error, veuillez remplir une seule case"
Merci d'avance![]()
bonjour
rien de bien compliqué
il te suffit de gérer l' évènement selection change du sheets en question
exemple ici on gère la plage A1:G20
des que tu sélection une ligne si sur cette ligne une cellule est déjà remplie le message s'affiche et te sort de la sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Set plage = Range("A1:g20") Set isect = Application.Intersect(plage, Selection) If Not isect Is Nothing Then For i = 1 To plage.Columns.Count If Cells(Selection.Row, i) <> "" Then MsgBox "cette ligne est deja remplie" Exit Sub End If Next End If End Sub
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer :: ça peut servir aux autres
et n'oublie pas de voter
Merci Mais en fait le but c'est pas de dire cette ligne est déjà remplie pour chaque ligne ,
ce que je veux c'est dès que la personne remplit plus qu'une case dans une ligne le msg d'erreur s'affiche et pour les lignes où on a une seule case remplie à ne rien afficher
ok
donc ce sera l'évènement change
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Private Sub Worksheet_Change(ByVal Target As Range) Set plage = Range("A1:g20") Set isect = Application.Intersect(plage, Selection) If Not isect Is Nothing Then For i = 1 To plage.Columns.Count If Cells(Target.Row, i) <> "" And Cells(Target.Row, i) <> Target Then MsgBox "cette ligne est deja remplie" Exit Sub End If Next End If End Sub
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer :: ça peut servir aux autres
et n'oublie pas de voter
Monsieur Patrick , j'ai essayé mais ça n'a pas marché
Pouvez vous la vérifier dans ce fichier joint Excel si c'est possible ?
je m'excuse et merci d'avance
Bonjour à tous,
Et pourquoi pas une simple Validation avec =NBVAL($A2:$C2)<2 ?
eric
edit : ton fichier
rebonjour
eriic c'est une formule excel on est pas sur le bon forum pour ca
rihab92 ton fichier fonctionne très bien chez moi et fait exactement ce qui est demandé dans le post initial
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer :: ça peut servir aux autres
et n'oublie pas de voter
Re,
C'est clair.eriic c'est une formule excel on est pas sur le bon forum pour ca
Mais parfois les demandeurs ne connaissent pas les fonctionnalités de base d'excel.
Ca ne mange pas de pain de leur signaler au cas où, tant pis si c'est à coté de la plaque.
Bonne soirée tout le monde.
eric
salut eriic
les formules c'est bien aussi mais disons que si il veut agir en fonction de cet évènement les formules Excel sont limitées
par exemple ici il veut un msgbox sans faire de fonction en public il n'y arrivera pas sans vba
mais mille excuse si je t'ai paru sec ca n'était pas mon intention![]()
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer :: ça peut servir aux autres
et n'oublie pas de voter
bonjour,
Edit: If Target.Row> 1 then
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Private Sub Worksheet_Change(ByVal Target As Range) Dim txt As String if Target.Row> 1 then For i = 0 To 2 txt = txt & trim("" & Cells(Target.Row, 1).Offset(0, i)) Next end if If Len(txt) > 1 Then MsgBox "Err" End Sub
Dernière modification par Invité ; 02/03/2015 à 14h50.
Bonjour patrick,
Non, non. Aucun soucis, c'est exact que c'est un forum vba :-)mais mille excuse si je t'ai paru sec ca n'était pas mon intention
Et puis autant parler net, mais là il n'y avait vraiment rien de choquant.
eric
Partager