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

Liste de validation et choix

8 réponses
Avatar
Fredo(67)
Bonjour,

dans la colonne "L" de mon fichier j'ai les valeurs suivantes :

Type de charge
Banche simple
Banche double
Banche triple
Benne 1,000 m3
Benne 1,500 m3
Pr=E9mur
Pr=E9fa Plein
Escalier type 1
Escalier type 2
Escalier type 3
Escalier type 4
Escalier type 5

La plage o=F9 sont not=E9es ces donn=E9es se nomme liste_de_charge


j'ai ensuite dans mon classeur des cellules que je remplie en utilisant la =
Validation des Donn=E9es

En D30; D60; D90; D120; D150; D180; D210

dans ces cellules je ne peux saisir qu'une valeur contenue dans liste_de_ch=
arge

Ma question :=20

comment pourrais-je faire pour que, si en D30 c'est Banche simple qui est s=
=E9lectionn=E9e, on ne puisse pas la s=E9lectionner dans aucune autre cellu=
le (l'id=E9al serait que la valeur n'apparaisse plus dans la liste des vali=
dation.
(un clic sur le triangle noir =E0 droite fait appara=EEtre la liste des val=
eurs autoris=E9e)

j'ai cru lire un article l=E0 dessus, mais pas main de remettre la main des=
sus.

Merci pour votre aide

8 réponses

Avatar
MichD
Bonjour,

Je te suggère ceci :

A ) Ce code doit être placé dans le module de la feuille où l'action se
déroule.

B ) Place ta liste dans la "feuil4" (celle que tu veux) dont la seule
fonction est
de conserver la liste de validation en colonne A, A1 à A13

Copie la plage A1:A13 vers la colonne D1:D13 de la feuil4

Assigne à la plage "D1:D13" le nom liste_de_charge

C ) Si le nom de la feuille choisie est différent de "Feuil4", n'oublie pas
de
modifier le nom dans la macro.

D ) Tu masques cette feuille comme ceci :
worksheets("Feuil4").Visible=xlSheetVeryHidden
Cela rendra la feuille inaccessible par les usagers.

'--------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rg As Range, Sh As Worksheet, C As Range, A As Variant

Set Sh = Worksheets("Feuil4") 'à définir

With Me
Set Rg = Range("D30,D60,D90,D120,D150,D180,D210")
End With
If Not Intersect(Target, Rg) Is Nothing Then
Application.EnableEvents = False
With Sh
.Range("A1:A" & .Range("A65536").End(xlUp).Row).Copy .Range("D1")
End With
With Sh
With .Range("D2:D" & .Range("D65536").End(xlUp).Row)
For Each C In Rg
A = Application.Match(C, .Cells, 0)
If IsNumeric(A) Then
.Item(A, 1).Delete xlUp
Else
Err.Clear
End If
Next
.Name = "liste_de_charge"
End With
End With
Application.EnableEvents = True
End If
End Sub
'--------------------------------------------
Avatar
Fredo(67)
Salut MichD
j'ai adapté ta proposition à mon cas, et en fait cela ne fonctionne pas , non pas ta macro, mais mon fichier n'est pas adapté à ce que je voula is faire....

Toutefois, je te remercie pour le temps passé à me trouver une solution .

Merci


Le mardi 4 février 2014 17:38:32 UTC+1, MichD a écrit :
Bonjour,



Je te suggère ceci :



A ) Ce code doit être placé dans le module de la feuille où l'actio n se

déroule.



B ) Place ta liste dans la "feuil4" (celle que tu veux) dont la seule

fonction est

de conserver la liste de validation en colonne A, A1 à A13



Copie la plage A1:A13 vers la colonne D1:D13 de la feuil4



Assigne à la plage "D1:D13" le nom liste_de_charge



C ) Si le nom de la feuille choisie est différent de "Feuil4", n'oublie pas

de

modifier le nom dans la macro.



D ) Tu masques cette feuille comme ceci :

worksheets("Feuil4").Visible=xlSheetVeryHidden

Cela rendra la feuille inaccessible par les usagers.



'--------------------------------------------

Private Sub Worksheet_Change(ByVal Target As Range)

Dim Rg As Range, Sh As Worksheet, C As Range, A As Variant



Set Sh = Worksheets("Feuil4") 'à définir



With Me

Set Rg = Range("D30,D60,D90,D120,D150,D180,D210")

End With

If Not Intersect(Target, Rg) Is Nothing Then

Application.EnableEvents = False

With Sh

.Range("A1:A" & .Range("A65536").End(xlUp).Row).Copy .Range("D1")

End With

With Sh

With .Range("D2:D" & .Range("D65536").End(xlUp).Row)

For Each C In Rg

A = Application.Match(C, .Cells, 0)

If IsNumeric(A) Then

.Item(A, 1).Delete xlUp

Else

Err.Clear

End If

Next

.Name = "liste_de_charge"

End With

End With

Application.EnableEvents = True

End If

End Sub

'--------------------------------------------
Avatar
Jacquouille
Bonjour Fredo
C'est très gentil à toi de remercier ton répondeur. Cela est rare et,
avouons-le, cela fait plaisir d'avoir un peu de reconnaissance.
Mais, pourquoi n'expliques-tu pas à Denis ce qui ne va pas?
En exposant clairement le problème, il arrive parfois que l'on trouve
soi-même la solution. Mais, aussi, on aide le répondeur à mieux cerner la
chose et donc à trouver une solution plus appropriée à ce problème.
A te lire.
Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"Fredo(67)" a écrit dans le message de groupe de discussion :


Salut MichD
j'ai adapté ta proposition à mon cas, et en fait cela ne fonctionne pas, non
pas ta macro, mais mon fichier n'est pas adapté à ce que je voulais
faire....

Toutefois, je te remercie pour le temps passé à me trouver une solution.

Merci


Le mardi 4 février 2014 17:38:32 UTC+1, MichD a écrit :
Bonjour,



Je te suggère ceci :



A ) Ce code doit être placé dans le module de la feuille où l'action se

déroule.



B ) Place ta liste dans la "feuil4" (celle que tu veux) dont la seule

fonction est

de conserver la liste de validation en colonne A, A1 à A13



Copie la plage A1:A13 vers la colonne D1:D13 de la feuil4



Assigne à la plage "D1:D13" le nom liste_de_charge



C ) Si le nom de la feuille choisie est différent de "Feuil4", n'oublie
pas

de

modifier le nom dans la macro.



D ) Tu masques cette feuille comme ceci :

worksheets("Feuil4").Visible=xlSheetVeryHidden

Cela rendra la feuille inaccessible par les usagers.



'--------------------------------------------

Private Sub Worksheet_Change(ByVal Target As Range)

Dim Rg As Range, Sh As Worksheet, C As Range, A As Variant



Set Sh = Worksheets("Feuil4") 'à définir



With Me

Set Rg = Range("D30,D60,D90,D120,D150,D180,D210")

End With

If Not Intersect(Target, Rg) Is Nothing Then

Application.EnableEvents = False

With Sh

.Range("A1:A" & .Range("A65536").End(xlUp).Row).Copy .Range("D1")

End With

With Sh

With .Range("D2:D" & .Range("D65536").End(xlUp).Row)

For Each C In Rg

A = Application.Match(C, .Cells, 0)

If IsNumeric(A) Then

.Item(A, 1).Delete xlUp

Else

Err.Clear

End If

Next

.Name = "liste_de_charge"

End With

End With

Application.EnableEvents = True

End If

End Sub

'--------------------------------------------
Avatar
DanielCo
Avatar
Fredo(67)
Salut Jacquouille,

En fait si je n'ai pas plus développé ma demande c'est qu'en l'exrimant , je me suis rendu compte que la résolution de mon "soucis" engendrerait une macro qui deviendrait très vite énorme, surtout au vu du bénéfi ce apporté.

voilà...
(sans dire qu'exprimer la totalité de mon problème en des termes clairs et concis me semble au delà de mes possibilités....hé hé hé..)


Le jeudi 6 février 2014 12:14:07 UTC+1, Jacquouille a écrit :
Bonjour Fredo

C'est très gentil à toi de remercier ton répondeur. Cela est rare e t,

avouons-le, cela fait plaisir d'avoir un peu de reconnaissance.

Mais, pourquoi n'expliques-tu pas à Denis ce qui ne va pas?

En exposant clairement le problème, il arrive parfois que l'on trouve

soi-même la solution. Mais, aussi, on aide le répondeur à mieux cer ner la

chose et donc à trouver une solution plus appropriée à ce problèm e.

A te lire.

Jacquouille



" Le vin est au repas ce que le parfum est à la femme."

"Fredo(67)" a écrit dans le message de groupe de discussion :





Salut MichD

j'ai adapté ta proposition à mon cas, et en fait cela ne fonctionne p as, non

pas ta macro, mais mon fichier n'est pas adapté à ce que je voulais

faire....



Toutefois, je te remercie pour le temps passé à me trouver une soluti on.



Merci





Le mardi 4 février 2014 17:38:32 UTC+1, MichD a écrit :

> Bonjour,

>

>

>

> Je te suggère ceci :

>

>

>

> A ) Ce code doit être placé dans le module de la feuille où l'act ion se

>

> déroule.

>

>

>

> B ) Place ta liste dans la "feuil4" (celle que tu veux) dont la seule

>

> fonction est

>

> de conserver la liste de validation en colonne A, A1 à A13

>

>

>

> Copie la plage A1:A13 vers la colonne D1:D13 de la feuil4

>

>

>

> Assigne à la plage "D1:D13" le nom liste_de_charge

>

>

>

> C ) Si le nom de la feuille choisie est différent de "Feuil4", n'oubl ie

> pas

>

> de

>

> modifier le nom dans la macro.

>

>

>

> D ) Tu masques cette feuille comme ceci :

>

> worksheets("Feuil4").Visible=xlSheetVeryHidden

>

> Cela rendra la feuille inaccessible par les usagers.

>

>

>

> '--------------------------------------------

>

> Private Sub Worksheet_Change(ByVal Target As Range)

>

> Dim Rg As Range, Sh As Worksheet, C As Range, A As Variant

>

>

>

> Set Sh = Worksheets("Feuil4") 'à définir

>

>

>

> With Me

>

> Set Rg = Range("D30,D60,D90,D120,D150,D180,D210")

>

> End With

>

> If Not Intersect(Target, Rg) Is Nothing Then

>

> Application.EnableEvents = False

>

> With Sh

>

> .Range("A1:A" & .Range("A65536").End(xlUp).Row).Copy .Range("D1 ")

>

> End With

>

> With Sh

>

> With .Range("D2:D" & .Range("D65536").End(xlUp).Row)

>

> For Each C In Rg

>

> A = Application.Match(C, .Cells, 0)

>

> If IsNumeric(A) Then

>

> .Item(A, 1).Delete xlUp

>

> Else

>

> Err.Clear

>

> End If

>

> Next

>

> .Name = "liste_de_charge"

>

> End With

>

> End With

>

> Application.EnableEvents = True

>

> End If

>

> End Sub

>

> '--------------------------------------------
Avatar
Fredo(67)
C'est pas mal du tout, mais la les valeurs de la colonne N sont à valider par Crtl+Maj+Entrée ? non ?

Le jeudi 6 février 2014 14:49:36 UTC+1, DanielCo a écrit :
Bonjour,



Regade le classeur à l'adresse :



https://skydrive.live.com/redir?residD5842B14D14FA4!885&authkey=!A Lu8dClQ490IrjM&ithint=file%2c.xlsx



Cordialement.

Daniel
Avatar
Fredo(67)
J'ai trouvé

Et bien finalement, Jacquouille, tu avais raison.
Mais cela est même allé plus loin, car DanielCo à trouvé, sans que j'ai réussi à lui expliquer les problèmes auxquels j'était confront é, à me proposer une solution qui me convienne.

Encore un grand merci à vous tous...



Le jeudi 6 février 2014 15:33:33 UTC+1, Fredo(67) a écrit :
C'est pas mal du tout, mais la les valeurs de la colonne N sont à valid er par Crtl+Maj+Entrée ? non ?



Le jeudi 6 février 2014 14:49:36 UTC+1, DanielCo a écrit :

> Bonjour,

>

>

>

> Regade le classeur à l'adresse :

>

>

>

> https://skydrive.live.com/redir?residD5842B14D14FA4!885&authkey= !ALu8dClQ490IrjM&ithint=file%2c.xlsx

>

>

>

> Cordialement.

>

> Daniel
Avatar
Jacquouille
A vrai dire, je crois qu'il a acheté une nouvelle boule de cristal... -)


Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"Fredo(67)" a écrit dans le message de groupe de discussion :


J'ai trouvé

Et bien finalement, Jacquouille, tu avais raison.
Mais cela est même allé plus loin, car DanielCo à trouvé, sans que j'ai
réussi à lui expliquer les problèmes auxquels j'était confronté, à me
proposer une solution qui me convienne.

Encore un grand merci à vous tous...



Le jeudi 6 février 2014 15:33:33 UTC+1, Fredo(67) a écrit :
C'est pas mal du tout, mais la les valeurs de la colonne N sont à valider
par Crtl+Maj+Entrée ? non ?



Le jeudi 6 février 2014 14:49:36 UTC+1, DanielCo a écrit :

> Bonjour,

>

>

>

> Regade le classeur à l'adresse :

>

>

>

> https://skydrive.live.com/redir?resid–D5842B14D14FA4!885&authkey=!ALu8dClQ490IrjM&ithint=file%2c.xlsx

>

>

>

> Cordialement.

>

> Daniel