XL 2016 MFC sur plusieurs critères

Lorenzini

XLDnaute Occasionnel
Bonjour,

N'ayant plus de solutions (vu mon niveau limité en vba car j'imagine qu'il va falloir passer par là...), je me tourne vers vous car je patauge.
Dans le petit tableau que j'ai joins à ce message, je souhaiterais que le statut d'une ligne prévale sur le(s) statut(s) d'une/des autre(s) ligne(s) ; je donne qq exemples pour illustrer :

1721845828931.png


En changeant le statut (j'ai fais une MFC) d' "en cours" à "prêt" de la ligne 24 p.ex., je cherche à ce que

- toutes les lignes précédentes du tableau (jusqu'à celles qui avaient le statut "prêt" ; c'est la limite, s'il y'en a) ayant le même n° de chariot (colonne G), prennent le même statut.

Concrètement, si clique dans la cellule K24 pour passer d'"en cours" à "prêt", je cherche à ce que les lignes encadrées en rouge (20 et 12 car n° de chariot identique à la ligne 24) se changent à leur tour en "prêt" (et prennent la même mise en forme, couleur).

Autre exemple (qui ajoute encore en difficultés, comme si ce n'était pas assez compliqué comme çà !) :

1721847182375.png


En changeant le statut "en cours" de la ligne 23, la ligne 18 (qui a le même n° de chariot) se changerait également.

Les difficultés supplémentaires sont que :

1) ici, pour cet exemple, la ligne 10 (qui a aussi un n° de chariot commun) NE DOIT PAS changer car elle a déjà le statut "prêt" !

2) plusieurs de mes collègues seront censés travailler avec ce tableau ; quid si un utilisateur va trop vite et réalise trop tard qu'il a changé le statut d'"en cours" à "prêt" ?
Comment refaire le chemin inverse SANS CHANGER les lignes précédentes qui avaient le même n° de chariot MAIS QUI AVAIT DEJA le statut "prêt" ? (comme la ligne 10)
Il ne faudrait pas qu'en repassant de "prêt" à "en cours", la ligne 10 se change elle aussi de "prêt" à "en cours" !...

Pfff, je ne sais pas si je suis assez clair mais qui que vous soyez, vous aurez déjà été assez courageux d'avoir lu tout ce que j'ai écrit jusqu'ici ! 😁

Je vous avoue très honnêtement que çà fait quelques jours que je creuse... je sors tout juste de m'être cassé la tête d'avoir résolu d'autres choses comme le fait qu'Excel ne me recalcule pas l'heure automatiquement... mais là, je ne sais plus !

Si vous pouviez m'aider, j'apprécierai grandement ! :)
 

Pièces jointes

  • JOKIMIO TEST 3.xlsm
    44.8 KB · Affichages: 6
Solution
pour les les ######## Il faut simplement élargir la colonne
en pj, nouveau fichier avec le message de confirmation plus petit correctif
VB:
Sub MajStatut(pTarget As Range)
Dim Ligne As Long, nbLigRetour As Long
Dim NouveauStatut
Dim MemoDateMaj As Date
Dim Reponse As Integer
Dim Message As String
Dim LigneEnCours As Boolean

    Application.EnableEvents = False
    MemoDateMaj = Now
    NouveauStatut = pTarget.Value
    Ligne = pTarget.Row - ActiveSheet.Range("Tableau3").Row + 1
    If NouveauStatut = "en cours" Then
        ' on compte le nombre de lignes éventuellemnt concernées pour un retour arrière pour éventuellemnt afficher un message
        nbLigRetour = 0
        For i = 1 To Ligne - 1
            ' on compte les lignes...

TooFatBoy

XLDnaute Barbatruc
Essaye ça dans ton module 1 :
VB:
Sub Image2_Cliquer()
'
    Sheets("Feuil1").Unprotect Password:="laurent2105"

    With Range("Tableau3").ListObject.ListRows
        Application.EnableEvents = False
        .Add
        Range("Tableau3")(.Count, 1).Select
        Application.EnableEvents = True
    End With

    Sheets("Feuil1").Protect Password:="laurent2105"

End Sub
 
Dernière édition:

Lorenzini

XLDnaute Occasionnel
par contre, j'ai les accès aux colonnes N, O et P et çà, ce n'est pas ce que je souhaite...
Je voulais limiter l'accès (depuis le bouton ECONOMAT) aux colonnes B à M...
C'est normal la Liste déroulante en L25 de la feuille "Feuil1" ??? 🤔
dans cette version (avec mot de passe '1234', les nouvelles lignes semblent s'intégrer au TS... une bleue, une blanche, ... reste le problème de la date en colonne B si choix du 'NON' pour encodage...

je vais tester ta proposition dans le module 1 ; d'ores et déjà merci à toi pour le temps consacré !
😃
 

Pièces jointes

  • JOKIMIO HELP.xlsm
    332 KB · Affichages: 2

Lorenzini

XLDnaute Occasionnel
Et donc, L25 ???
en fait, désolé pour la réponse tardive, je testais...
L25 est censé ''empêcher" l'utilisateur de faire défiler l'ascenceur ou plutôt de bloquer la ''ScrollArea'' sur cette seule cellule.
A l'origine, j'ai mis une image GIF (un robot d'une chaine de montage)) derrière laquelle est caché le rectangle de sélection...
Donc, en soi, ce n'est pas très important, c'est juste pour éviter l'utilisateur de se déplacer dans la feuille...
 

Lorenzini

XLDnaute Occasionnel
en fait, désolé pour la réponse tardive, je testais...
L25 est censé ''empêcher" l'utilisateur de faire défiler l'ascenceur ou plutôt de bloquer la ''ScrollArea'' sur cette seule cellule.
A l'origine, j'ai mis une image GIF (un robot d'une chaine de montage)) derrière laquelle est caché le rectangle de sélection...
Donc, en soi, ce n'est pas très important, c'est juste pour éviter l'utilisateur de se déplacer dans la feuille...
et L25 est pour la feuille 3, à l'ouverture du fichier, comme tu as vu dans Workbook_Open...
 

Lorenzini

XLDnaute Occasionnel
Essaye ça dans ton module 1 :
VB:
Sub Image2_Cliquer()
'
    Sheets("Feuil1").Unprotect Password:="laurent2105"

    With Range("Tableau3").ListObject.ListRows
        Application.EnableEvents = False
        .Add
        Range("Tableau3")(.Count, 1).Select
        Application.EnableEvents = True
    End With

    Sheets("Feuil1").Protect Password:="laurent2105"

End Sub
en fait, je réalise que ton code est la façon ''propre'' d'écrire l'instruction...
Il ne reste plus qu'à y intégrer un comptage + 1 depuis le n° précédent.
Je vais voir ce que je peux faire.
 

Lorenzini

XLDnaute Occasionnel
j'ai corrigé par le menu d'Excel --> Données --> Validation des données --> Autoriser Tout
c'est bien çà ?
J'ai honte de le dire, mais je découvre encore en VBA.
Et des fois, je pense bien faire mais je m'y prends mal.
Même Patrick_Toulon m'a recadré une fois si tu veux savoir avec mes

VB:
if ceci ou cela then goto 10 else goto 20
10 fais ceci
20 fais cela

il m'avait dit : 'c'est quoi c'est 'goto' à la pelle ? j'ai l'impression d'être revenu 40 ans en arrière !''
Je te promets que je me suis senti ridicule ; mais bon...

Et puis j'avais appris que et bien oui, il y'avait les select...case... LOL

J'apprends encore tu vois 😁
 

TooFatBoy

XLDnaute Barbatruc
J'ai honte de le dire, mais je découvre encore en VBA.
Me too...


Même Patrick_Toulon m'a recadré une fois si tu veux savoir
Ah ? C'est étonnant, c'est pas le genre à recadrer les gens... 🤣


Je te promets que je me suis senti ridicule
Aucune raison de se sentir ridicule pour ça. Chacun fait selon ses connaissances.

C'est vrai que GOTO 10 ça me rappelle mes années de lycée... ;)
 

Discussions similaires

Réponses
9
Affichages
775

Statistiques des forums

Discussions
313 866
Messages
2 103 082
Membres
108 521
dernier inscrit
manouba