Blocage de date (AUJOURDHUI)

Résolu
Besoindaide83 Messages postés 129 Statut Membre -  
Besoindaide83 Messages postés 129 Statut Membre -
Bonjour,

Je souhaiterai qu'une céllule qui défile en fonction des jours restant entre aujourdhui et une date, cesse de défilé mais affiche le dernier délai restant lorsqu'une autre céllule affiche 100%

Voici le fichier exemple avec l'explication.

https://www.cjoint.com/?CFrpW3Qocer
--
_____________________________
Maman m'a dit un jour :"Travaille bien à l'école et tu auras un bon métier".
Aujourd'hui j'ai compris ce qu'elle a voulu me dire et je rêve de passer ma vie a l'école...

15 réponses

  1. Frenchie83 Messages postés 2254 Statut Membre 339
     
    cette macro va agir dès l'ouverture du classeur; donc à chaque changement de date
    Private Sub Auto_Open()
    For Each Element In Range("L3:L10")
    If Element.Offset(0, -1).Value < 1 Then Element.Value = Element.Offset(0, -9).Value - Range("O3").Value
    Next
    End Sub

    supprimez la macro précédente de la feuille "Remontées et infos"
    faites insérer un module et collez la nouvelle macro dans ce module

    essayez
    1
  2. Frenchie83 Messages postés 2254 Statut Membre 339
     
    Bonjour

    Essayez ceci

    à copier dans le module de la feuille "Remontées et infos"

    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address <> "$O$3" Then Exit Sub
    For Each Element In Range("L3:L10")
    If Element.Offset(0, -1).Value < 1 Then Element.Value = Element.Offset(0, -9).Value - Target.Value
    Next
    End Sub

    cdlt
    0
    1. Besoindaide83 Messages postés 129 Statut Membre 15
       
      Tu pm'expliquer comment je dois proceder car je ne sais absolument pas travailler sous vba avec excel :(
      0
  3. Frenchie83 Messages postés 2254 Statut Membre 339
     
    bonjour

    Pour pouvoir utiliser le VBA (extrait de l'aide de MSoffice)
    Vous devez afficher l'onglet Développeur ou exécuter le mode développeur pour écrire des macros, exécuter des macros enregistrées au préalable ou créer des applications à utiliser avec les programmes Microsoft Office.
    Procédez comme suit dans Excel
    Cliquez sur le bouton Microsoft Office Image du bouton, puis sur Options Excel,
    Cliquez sur Standard, puis activez la case à cocher Afficher l'onglet Développeur dans le ruban.


    cliquez sur le nouvel onglet développeur dans le ruban
    cliquez sur Visual basic
    dans la fenêtre de gauche, cliquez sur la feuille "Remontées et infos" et y copier le petit bout de programme
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address <> "$O$3" Then Exit Sub
    For Each Element In Range("L3:L10")
    If Element.Offset(0, -1).Value < 1 Then Element.Value = Element.Offset(0, -9).Value - Target.Value
    Next
    End Sub

    bonne journée
    cdlt
    0
  4. Besoindaide83 Messages postés 129 Statut Membre 15
     
    Ca ne fonctionne pas hier le 17 les deux première ligne etaient a 100% et 164 jour restant et aujourd'hui le 18 elle aurraient du rester a 164 et ne pas descendre a 163 puisque la cellule d'avant est a 100%
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Besoindaide83 Messages postés 129 Statut Membre 15
     
    Enfait je veux figer la céllule qui contient la formule de calcul du nombre de jour entre aujourdhui et la date de fin (qui défile chaque jour) lorsque le % d'avancement atteind 100%

    0
  7. Frenchie83 Messages postés 2254 Statut Membre 339
     
    nous avons envoyez notre précédent post en même temps, donc vous n'avez pas vu ma réponse

    j'avais bien compris qu'il fallait figer le nombre de jours, fonctionnement de la macro.
    si les 100% ne sont pas atteint, on applique la formule
    si les 100% sont atteint, on fige la valeur
    https://www.cjoint.com/?CFsilCO3SRG
    0
    1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      Bonjour Frenchie83,

      Je ne pense pas que ta macro puisse fonctionner car tu testes la cellule "$O$3" dont la formule donne la date du jour et la macro "change" ne se déclenche que lorsque la cellule est modifiée : dans ce classeur, la cellule change de valeur mais n'est pas modifiée.
      0
  8. Besoindaide83 Messages postés 129 Statut Membre 15
     
    oki je vais essayer et si cela fonctionne pour l'appliquera mon fichier de base il faut que je modifi quelque chose ? sachant que la structure le nombre de données est différent
    0
  9. Besoindaide83 Messages postés 129 Statut Membre 15
     
    Ca ne fonctionne pas la macro HELP SVP.
    frenchi toi ca fonctionne car tu as remplacé la formule dans le fichier par la valeur que je voulais donc c'est sur que ca fonctionne sauf que moi je veux que ca se fasse tout seul
    0
  10. Frenchie83 Messages postés 2254 Statut Membre 339
     
    Bonjour gbinforme

    Effectivement, pour faire les tests, j'ai écrasé la formule en O3 "=aujourdhui()", et je changeai les dates à la main, ce qui dans ce cas là fonctionnait bien.
    Donc le problème se pose à nouveau. Peut-être qu'il faudra prévoir une colonne supplémentaire qui conserve la date et faire un autre test. je vais y réfléchir à moins que quelqu'un est une autre idée?
    0
  11. Besoindaide83 Messages postés 129 Statut Membre 15
     
    Non ca fonctionne pas il me modifie les cellules il en fige certaines mais pas toute et j'aimerai que lorsque je change le pourcentage pour le mettre en dessous 100% que le compteur reprenne enfaite. c'est vraiment figer le compteur lorsque c'est 100% en figeant la formule mais lorsque le % et modifié que la formule reprenne.
    0
  12. Besoindaide83 Messages postés 129 Statut Membre 15
     
    UP SVP
    0
    1. Frenchie83 Messages postés 2254 Statut Membre 339
       
      j'ai un souci, je n'arrive plus à voir les suites de la discussion au delà de ce post (même ce que j'ai envoyé juste après), alors que j'arrive à voir les autres discussions, si quelqu'un peut m'éclairer sur mon problème
      merci
      0
  13. Frenchie83 Messages postés 2254 Statut Membre 339
     
    essayez ceci

    à copier dans la feuille "Remontées et infos"
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column <> 12 Or Target.Row > 18 Or Target.Row < 13 Then Exit Sub
    MiseAJour
    End Sub

    Sub MiseAJour()
    For Each Element In Range("L3:L10")
    If Element.Offset(0, -1).Value < 1 Then
    Element.Value = Element.Offset(0, -9).Value - Range("O3").Value
    Element.Interior.ColorIndex = 6
    End If
    Next
    Application.EnableEvents = True
    End Sub

    et conserver la macro du module 1
    0
  14. Besoindaide83 Messages postés 129 Statut Membre 15
     
    peux tu le faire dans le fichier et me le renvoyer parc eque je viens de le faire et ca ne fonctionne pas et je sais pas si je fais correctement.
    0
  15. Besoindaide83 Messages postés 129 Statut Membre 15
     
    up :/

    0