IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Formule ou VBA pour modifier dates suite à un choix dans liste déroulante


Sujet :

Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2017
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2017
    Messages : 30
    Points : 20
    Points
    20
    Par défaut Formule ou VBA pour modifier dates suite à un choix dans liste déroulante
    Bonjour tout le monde,

    Je suis sur la finalisation (je pense) d'un fichier Excel mais je bloque sur une formule. Voici mon fichier Suivi dossiers.xlsx qui permettra de voir ce qu'il en est.

    J'ai créé une liste déroulante en H avec 3 choix possible et je voudrais savoir si lorsqu'un choix est sélectionné on pourrait modifier les "dates limites de sorties" et les "prochaines dates de sorties" avec des formules ou autre comme du VBA dont je ne connais pas grand chose pour l'instant car je pense étudier ce sujet plus profondément.

    Par exemple:

    -avec un 1er choix j'aimerais que "la date limite de sortie" soit 330 jours après la "date de sortie"
    - Et pour les 2 autres choix j'aimerais que "la date limite de sortie soit de 30 jours après la "date de sortie" et la "Prochaine date de sortie" 30 jours après la "date de rentrée"

    Merci d'avance pour vos conseils.
    Je me rends tout de suite dans les sujets en VBA

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 763
    Points : 28 622
    Points
    28 622
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    As-tu essayé la fonction SI ?
    A première vue une formule incluant deux SI devrait suffire.
    La fonction CHOISIR pourrait également faire l'affaire.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2017
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2017
    Messages : 30
    Points : 20
    Points
    20
    Par défaut
    Bonjour Philippe,

    Merci pour ta réactivité.
    J'ai essayé quelques formules avec SI mais en vain ou peut-être mal formulées. Par contre je n'ai pas essayé la fonction CHOISIR je vais faire des tests.

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 763
    Points : 28 622
    Points
    28 622
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    J'ai essayé quelques formules avec SI mais en vain ou peut-être mal formulées
    Qu'as-tu essayé comme formule SI ?
    En affichant une image de ta liste de données on pourrait mieux t'aider car plusieurs intervenants dont je fais partie n'ouvrent jamais les classeurs joints aux discussions.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2017
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2017
    Messages : 30
    Points : 20
    Points
    20
    Par défaut
    Re,

    plusieurs intervenants dont je fais partie n'ouvrent jamais les classeurs joints aux discussions.
    Je comprends car il peut s'agir de quelque chose de malveillant

    Dernière fonction SI utilisé : " =SI(ET(H19="Autre";C19+30);ET(H19="Personnel";C19+330);ET(H19="Public";C19+30)) "
    Elle m'indique VRAI ou FAUX suivant si j'utilise ET ou OU.
    Avec une seule condition par exemple =SI(H19="Autre";C19+30) ça fonctionne.

    Nom : suivi dossier.png
Affichages : 931
Taille : 105,9 Ko

    Sinon je regarde le VBA mais pour la structure j'ai du mal.
    Commencer par Sub ou Function, utiliser IF certainement avec Date...

    Merci encore pour ton aide

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 763
    Points : 28 622
    Points
    28 622
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    La fonction SI avec des ET imbriqués est mal utilisée par rapport à ce que tu cherches à obtenir et c'est normal que la fonction te renvoie VRAI ou FAUX puisque c'est exactement ce que tu lui demandes.
    Le syntaxe de la fonction SI est SI(<Condition>;Valeur renvoyée si la condition est VRAI;Valeur renvoyée si la condition est fausse)
    donc dans ta formule ci-dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(ET(H19="Autre";C19+30);ET(H19="Personnel";C19+330);ET(H19="Public";C19+30))
    Ta condition est un ET qui renverra toujours VRAI si H19 = "Autre". parce-que le deuxième argument du ET C19+30 est VRAI car C19+30 équivaut à écrire C19+30<>0
    et la suite de ta syntaxe est tout aussi foireuse
    Surtout ne t'attaque pas au VBA car tu ne comprends déjà pas les fonctions simple d'excel SI, ET et OU. C'est ce que l'on donne dans les formations de base d'excel
    Lis au moins l'aide en ligne d'excel
    Tu as une boîte de dialogue très simple à utiliser qui pourra te montrer la syntaxe et toute l'aide que tu souhaites sur les fonctions.

    A lire le tutoriel Utilisation de l'assistant « Insertion de fonction »
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  7. #7
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2017
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2017
    Messages : 30
    Points : 20
    Points
    20
    Par défaut
    Re,

    Désolé pour la réponse tardive je m'étais absenté.
    Les fonctions de bases ça va mais c'est pour imbriqués plusieurs conditions et plusieurs fonctions que parfois je m'arrache les cheveux.
    Je regarde ce que tu m'as conseillé et t'informe de l'avancé

    Merci encore

  8. #8
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 763
    Points : 28 622
    Points
    28 622
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Les fonctions de bases ça va mais c'est pour imbriqués plusieurs conditions et plusieurs fonctions que parfois je m'arrache les cheveux
    Voir le chapitre III. Imbriquer une fonction dans une fonction du tutoriel Utilisation de l'assistant « Insertion de fonction »
    et pour ton cas, comme je l'ai écrit lors de ma première intervention, c'est un SI dans un SI

    Prenons comme exemple que si H5 a comme valeur Autre on renvoie la valeur de C5 + 30, si H5 est égal à Public on renvoie la valeur C5 + 60 et sinon (soit H5=Personnel) on renvoie C5 + 120. Cela donnera
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(H5="Autre";C5+30;SI(H5="Public";C5+60;C5+120))
    A toi maintenant de l'adapter à ton cas.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  9. #9
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2017
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2017
    Messages : 30
    Points : 20
    Points
    20
    Par défaut
    Bonjour Philippe,

    Je cherchais bien compliqué alors que la simplicité est parfois très utile.
    Voici ce que j'ai fait hier soir et qui revient à ce que tu me conseille de faire:

    =SI(ESTVIDE(D19);"";SI(H19="Autre";C19+30;SI(H19="Personnel";C19+330;SI(H19="Public";C19+30;SI(H19="";C19+90)))))

    Qu'en penses-tu ?

  10. #10
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 763
    Points : 28 622
    Points
    28 622
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Voici ce que j'ai fait hier soir et qui revient à ce que tu me conseille de faire: Qu'en penses-tu ?
    Et bien oui, c'est exactement comme cela qu'il faut faire.

    A une autre occasion, s'il y a trop de SI imbriqués, tu pourrais passer par la fonction RECHERCHEV qui chercherait le nombre de jours correspondant à la valeur placée en cellule H19 (LA LISTE) ET CE dans une liste placée par exemple dans une feuille contenant des paramètres. La liste de données dans la feuille "paramètre" peut être organisée comme suit
    La première colonne contient par exemple : Autre, Personnel, Public, etc;
    La deuxième colonne contient : 30, 330, 30
    Ce qui donnera comme formule pour reprendre ton exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(ESTVIDE(D19);"";C19+RECHERCHEV(H19;Parameter!$A$2:$B$4;2;FAUX))
    Par contre une valeur vide ne fonctionnera pas avec RECHERCHEV donc on ajoutera le SIERREUR
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(ESTVIDE(D19);"";C19+SIERREUR(RECHERCHEV(H19;Parameter!$A$2:$B$4;2;FAUX);90))
    Exemple dans ce billet Comment remplacer des SI imbriqués par la fonction RECHERCHEV
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  11. #11
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2017
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2017
    Messages : 30
    Points : 20
    Points
    20
    Par défaut
    Re,

    Je te remercie pour ces indications qui fonctionnent à la perfection aussi.

    Je désire apporter une amélioration, à laquelle j'ai pensé tout à l'heure, mais j'ai besoin de savoir comment réaliser cela car je ne pense pas que se soit réalisable avec des formules.

    Explication:
    Mon classeur possède 4 feuilles
    - Feuille 1 = Suivi
    - Feuille 2 = Groupe 1
    - Feuille 3 = Groupe 2
    - Feuille 4 = Public

    Ce que j'aimerai c'est que lorsque je rempli mon tableau Feuille 1 comme vu ci-dessus, avec le rajout d'une colonne C pour savoir à qui le dossier est attribué (Groupe 1, Groupe 2, Public), c'est qu'avec la mention attribuée la ligne se recopie automatiquement dans le tableau identique correspondant

    Par exemple:
    Feuille 1(Suivi) dossier attribué à groupe 1, la ligne se recopie dans la Feuille 2(Groupe 1)

    Saurais-tu comment générer cela ?


    Il y a du nouveau j'ai réalisé cette macro qui recopie :
    Sub test()
    For Each cel In Sheets("Feuil1").Range("C5:C" & Range("C65536").End(xlUp).Row)
    If UCase(cel) = "GROUPE 1" Then
    Range("A" & cel.Row & ":J" & cel.Row).Copy _
    Sheets("Feuil2").Range("A5:J5" & Sheets("Feuil2").Range("A65536").End(xlUp).Row + 1)
    ElseIf UCase(cel) = "GROUPE 2" Then
    Range("A" & cel.Row & ":J" & cel.Row).Copy _
    Sheets("Feuil3").Range("A5:J5" & Sheets("Feuil3").Range("A65536").End(xlUp).Row + 1)
    End If
    Next
    End Sub
    Le souci quand on l'exécute c'est qu'elle copie 50 fois la même ligne et quand je la relance elle en rajoute 50...
    Cela m'a amené à une autre interrogation c'est comment éviter les doublons ?

    Je continu à chercher de mon côté

    Il y a du mieux voire exactement ce que je cherchais voici ma macro:
    Dim j As Integer
    Dim LastRow As Integer
    Dim DerniereLigne As Integer

    Sub recopie()

    Application.ScreenUpdating = False

    For j = 2 To 4

    Sheets(j).Select
    LastRow = Range("C300").End(xlUp).Row
    For i = LastRow To 6 Step -1
    Sheets(j).Select
    Rows(i).Select
    Selection.Delete shift:=xlUp
    Next i

    Sheets("Suivi").Select
    DerniereLigne = Range("A300").End(xlUp).Row

    For k = 5 To DerniereLigne

    Sheets("Suivi").Select
    If Sheets(j).Name = Cells(k, 3).Value Then

    Rows(k).Select
    Selection.Copy

    Sheets(j).Select
    LastRow = Range("A300").End(xlUp).Row + 1
    Cells(LastRow, 1).Select
    ActiveSheet.Paste

    End If

    Next k

    Next j

    Sheets("Suivi").Select
    Application.CutCopyMode = True
    Application.ScreenUpdating = True

    End Sub
    J'avais juste un problème que j'ai cherché à résoudre pendant quelques heures. Les cellules se recopiais à la place des champs d'indications (N°, Nom, Date...) et j'ai compris que c'était dû aux lignes 3 et 4 car elles sont fusionnées.
    Du coup dans la ligne 5 j'ai noté un "x" afin qu'elle ne soit pas vide et que la macro puisse ainsi fonctionner correctement.

    Qu'en penses-tu ?


    A bientôt

Discussions similaires

  1. Réponses: 7
    Dernier message: 10/03/2015, 14h00
  2. Réponses: 3
    Dernier message: 29/11/2014, 10h02
  3. Réponses: 3
    Dernier message: 04/02/2013, 10h17
  4. VBA pour définir la requête source d'une liste déroulante
    Par aba_tarn dans le forum VBA Access
    Réponses: 1
    Dernier message: 03/07/2008, 12h14
  5. Réponses: 2
    Dernier message: 25/11/2005, 12h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo