"Locker" une cellule en fonction de 2 listes contenues dans 2 cellules

Leskwal

XLDnaute Occasionnel
"Locker" une cellule en fonction de 2 listes déroulantes contenues dans 2 cellules

Bonsoir

Je désire créer une macro qui permet de bloquer une cellule.

Voir fichier exemple.

Quand j'utilise les menus déroulants pour documenter les cellules A2 et B2 alors la cellule E2 se bloque (lockée).

Si je remplie manuellement A2 et/ou B2 manuellement (sans utiliser les menus déroulants) alors je peux remplir la cellule E2 (Délockée).

Une idée ???:D

Merci

Pascal
 

Pièces jointes

  • locked.xls
    17.5 KB · Affichages: 89
  • locked.xls
    17.5 KB · Affichages: 88
  • locked.xls
    17.5 KB · Affichages: 88
Dernière édition:

Leskwal

XLDnaute Occasionnel
Re : "Locker" une cellule en fonction de 2 listes contenues dans 2 cellules

Bonjour Luki, bonjour à tous

J'ai donc essayé d'adapter ta proposition à mon fichier réel.

Une grande partie fonctionne, mais pas l'essentiel, à savoir, sélection de ville de départ et une ville d'arrivée des menues déroulants; le kilométrage venant de la matrice ne s'affiche pas :mad:

je pense que c'est due aux définitions de fonction :

Code:
' fonction de recherche de l'index départ
Private Function IsInDepart(row As Long) As Long

    On Error Resume Next ' pour permettre le calcul si la valeur est absente de la liste
    IsInDepart = IIf(IsError(Application.Match(Cells(row, 1).Value, kms.Rows(1).Cells, 0)), 0, Application.Match(Cells(row, 1).Value, kms.Rows(1).Cells, 0))

End Function
' fonction de recherche de l'index arrivée
Private Function IsInArrivee(row As Long) As Long

    On Error Resume Next ' pour permettre le calcul si la valeur est absente de la liste
    IsInArrivee = IIf(IsError(Application.Match(Cells(row, 2).Value, kms.Columns(1).Cells, 0)), 0, Application.Match(Cells(row, 2).Value, kms.Columns(1).Cells, 0))

End Function

kms correspond à feuill2 de ton exemple.

Je pense toucher au but et pour cela te serait-il possible de documenter chacune des ligne de code. A quoi corresponde les row 2, les 0.... :D

Je pense que c'est de la que vient mon problème.

Merci d'avance :)

Pascal


PS : voici dans le fichier original la formule placé dans la cellule kms.

Code:
=SI(OU(ESTERREUR(EQUIV(C3;Ville_Arrivée;0));ESTERREUR(EQUIV(B3;VillesDépart;0)));;INDEX(Kms!A1:E76;0+EQUIV(C3;Ville_Arrivée;0);0+EQUIV(B3;VillesDépart;0)))

Les coordonnées des noms
Ville_arrivée
=Kms!$A$1:$A$76

Villedépart
=Kms!$A$1:$D$1


EN PIÈCE JOINTE LE FICHIER RÉEL DÉPOUILLÉ DES INFOS CONFIDENTIEL
 

Pièces jointes

  • FraisDéplacement_forum.zip
    34 KB · Affichages: 27
Dernière édition:

Luki

XLDnaute Accro
Re : "Locker" une cellule en fonction de 2 listes contenues dans 2 cellules

re,

La fonction n'est autre que la fonction EQUIV de la feuille de calcul :

Application.match(valeur cherchée, plage, paramètre de recherche (0 pour équivalence absolue))

Donc la fonction renvoie la position de la valeur cherchée dans la matrice, ou 0 si elle n'y est pas.



Pourrait tu mettre en ligne un fichier plus complet? ce serait plus facile..

J'essaie de te documenter la fonction si j'ai une minute, mais pas sûr dans la journée
A+
 

Luki

XLDnaute Accro
Re : "Locker" une cellule en fonction de 2 listes contenues dans 2 cellules

re,
Après réflexion, je pense que le souci vient de ton "Kms":

Dans la fonction, j'ai utilisé la propriété "codeName" de la feuille 2, qui est la même que sa propriété "name" par défaut. C'est un raccourci de code!
Le "codename" n'est modifiable que dans la fenêtre "propriétés".

Donc, pour faire référence à une feuille, 2 solutions:

par son "codeName"
Code:
Test=Feuil2.cells.count
par son "Name"
Code:
Test=Worksheets("Feuil2"). cells.count
Si ta matrice est en feuil2 et que tu renommes le nom de l'onglet en "kms", pas besoin de changer le code, car le "code name" de la feuille ne change pas. Tu peux le voir dans la fenêtre "propriété" du vbe.

Vois si c'est ça.
 

Leskwal

XLDnaute Occasionnel
Re : "Locker" une cellule en fonction de 2 listes contenues dans 2 cellules

Je suis encore au travail et n'est pas encore le temps de voir ton fichier, mais tes explications sont absolument cohérentes. Effectivement Kms est en feuil3.

Je suis pressé de rentrer du travail pour essayer ça.


Vraiment encore Merci et je te tiens au courant.

Pascal
 

Discussions similaires

Statistiques des forums

Discussions
312 747
Messages
2 091 605
Membres
105 007
dernier inscrit
adla