Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Validation de données

3 réponses
Avatar
nuit6
Bonjour =E0 tous,

J'utilise Excel 2003.
Dans une feuille j'ai 3 colonnes.
Pour chaque ligne seule une colonne doit pouvoir recevoir une valeur,
par ex :

3 vide vide
vide 3 vide
vide vide 3

J'ai essay=E9 avec Donn=E9es / Validation mais si les cellules ne sont pas
contig=FCes =E7a ne fonctionne pas. Est-ce que vous pourriez m'indiquer
comment faire en VBA svp ?

Merci d'avance pour vos r=E9ponses !

3 réponses

Avatar
garnote
Salut,

Supposons que la plage concernée est A1:C10.
Avec cette macro de feuille, tu ne pourras pas entrer
plus d'une valeur sur une même ligne.
Fais un clic droit sur l'onglet, un clic gauche sur "Visualiser le code"
et colle cette macro sur la feuille vierge qui devrait apparaître :

Private Sub Worksheet_Change(ByVal Target As Range)
Set ici = Range("A1:C10")
If Not Intersect(Target, ici) Is Nothing And Target.Count = 1 Then
ligne = Target.Row
If Application.CountA(ici.Rows(ligne)) > 1 Then Target = ""
End If
End Sub

Serge




a écrit dans le message de news:
Bonjour à tous,

J'utilise Excel 2003.
Dans une feuille j'ai 3 colonnes.
Pour chaque ligne seule une colonne doit pouvoir recevoir une valeur,
par ex :

3 vide vide
vide 3 vide
vide vide 3

J'ai essayé avec Données / Validation mais si les cellules ne sont pas
contigües ça ne fonctionne pas. Est-ce que vous pourriez m'indiquer
comment faire en VBA svp ?

Merci d'avance pour vos réponses !
Avatar
FFO
Salut à toi

Dans le VBA de la feuille (Touche ALT et F11 simultanée) mets ce code :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target <> "" Then
Range("A" & Target.Row).Activate
Range("A" & Target.Row).EntireRow.Find(What:="*", After:=Range("A" &
Target.Row), LookIn:=xlValues).Activate
Trouvé = ActiveCell.Address
Range("A" & Target.Row).EntireRow.FindNext(After:¬tiveCell).Activate
If ActiveCell.Address <> Trouvé Then
Target.Value = ""
MsgBox ("Une cellule est déjà saisie sur cette ligne")
End If
End If
End Sub

Tu ne pourras saisir par lignes que dans une seule cellule

Celà devrait convenir
Dis moi !!!
Avatar
Papyjac
Bonjour nuit6

Oui, tu peux utiliser la fonction validation :
1. Il faut mettre une validation par colonne
2. Il faut utiliser une formule (Choix Personnalisé)

La formule doit rendre vrai sir les données sous valide, et faux dans le cas
contraire

Bon courage

--
Papyjac


"" a écrit :

Bonjour à tous,

J'utilise Excel 2003.
Dans une feuille j'ai 3 colonnes.
Pour chaque ligne seule une colonne doit pouvoir recevoir une valeur,
par ex :

3 vide vide
vide 3 vide
vide vide 3

J'ai essayé avec Données / Validation mais si les cellules ne sont pas
contigües ça ne fonctionne pas. Est-ce que vous pourriez m'indiquer
comment faire en VBA svp ?

Merci d'avance pour vos réponses !