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

Macros et VBA Excel Discussion :

Inputbox - année


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 361
    Par défaut Inputbox - année
    Bonsoir,

    Dans mon tableau Excel, je souhaiterais sélectionner une année (par ex. 2023 ou 2024) via un inputbox et afficher uniquement les lignes correspondantes.

    A savoir : colonne A : Dates au format dd/mm/aaaa


    Voici mon 1er code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub CommandButton1_Click()
        Dim Dat As String
    Application.ScreenUpdating = False
     
        Dat = InputBox("Entrez l’année")
        If IsDate(Dat) Then
            Var = CDate(Dat)
            c = Application.Match(CDate(Dat) * 1, [A:A], 0)
            If IsNumeric(c) Then
                Cells(c, 1).Select
       End If
     
         Application.ScreenUpdating = True
    End Sub

    Est-t-il également possible d'afficher les lignes voulues choisies entre 2 dates, (ex. entre le 01/01/2023 et le 02/02/2024) ?

    Qui peut m'aider ?

    Merci.

    Bonne soirée.

  2. #2
    Membre émérite
    Homme Profil pro
    Responsable des études(en disponibilité)
    Inscrit en
    Juin 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable des études(en disponibilité)
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 367
    Par défaut
    dans ton code, il manque un end if.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 361
    Par défaut
    Bonjour,


    Comment afficher uniquement les lignes de, par exemple 2023 ou 2024, ..... ?

    Merci

  4. #4
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Bonjour, voici 2 macros qui devraient faire l'affaire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Sub FiltrerParAnnee()
        Dim annee As Variant
        Dim ws As Worksheet
        Dim rng As Range
     
        annee = InputBox("Veuillez entrer l'année à filtrer :")
     
        If annee = "" Then Exit Sub
     
        Set ws = ThisWorkbook.Sheets("Feuil1") ' Modifier le nom de la feuille si nécessaire
        Set rng = ws.Range("A1:A50") ' Modifier la plage si nécessaire
     
        rng.AutoFilter Field:=1, Criteria1:="<=" & DateSerial(annee + 1, 1, 1), Operator:=xlAnd, Criteria2:=">=" & DateSerial(annee, 1, 1)
     
    End Sub

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Sub FiltrerEntreDeuxDates()
        Dim dateDebut As String
        Dim dateFin As String
        Dim ws As Worksheet
        Dim rng As Range
        Dim elements() As String
     
        dateDebut = InputBox("Veuillez entrer la date de début (JJ/MM/AAAA) :")
        dateFin = InputBox("Veuillez entrer la date de fin (JJ/MM/AAAA) :")
     
        If dateDebut = "" Or dateFin = "" Then Exit Sub
     
        ' Convertir les dates de début et de fin en format américain
        ' VBA utilise ce format pour les opérations de filtrage
        elements = Split(dateDebut, "/")
        dateDebut = elements(2) & "/" & elements(1) & "/" & elements(0)
        elements = Split(dateFin, "/")
        dateFin = elements(2) & "/" & elements(1) & "/" & elements(0)
     
        Set ws = ThisWorkbook.Sheets("Feuil1") ' Modifier le nom de la feuille si nécessaire
        Set rng = ws.Range("A1:A50") ' Modifier la plage si nécessaire
     
        rng.AutoFilter Field:=1, Criteria1:=">=" & dateDebut, Operator:=xlAnd, Criteria2:="<=" & dateFin
     
    End Sub

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 361
    Par défaut
    Merci.


    J'ai un autre code pour afficher les lignes mais ça ne fonctionne pas après les filtres proposés

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Bouton2_Cliquer()
    Worksheets("Feuil1").Rows.Hidden = False
    End Sub
    Aussi, quand je filtre sur 2025, la date du 01/01/2024 (mise en A3 reste affichée), idem lorsque je filtre entre 2 dates.

    Ma première date du tableau se trouve en A3 (j'ai modifié la plage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set rng = ws.Range("A3:A900")
    Merci

  6. #6
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Voici pour afficher les lignes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Bouton2_Cliquer()
     
        Dim ws As Worksheet
     
        Set ws = ThisWorkbook.Sheets("Feuil1") ' Utiliser la feuille "Feuil1"
     
        ' Vérifier si un filtre est appliqué
        If ws.AutoFilterMode Then
            ' Si un filtre est appliqué, afficher toutes les lignes masquées
            ws.AutoFilter.ShowAllData
        End If
     
    End Sub
    Pour ton deuxième problème, j'ai testé et j'ai le même comportement pour la première cellule de la plage, même si j'applique le filtre manuellement.
    J'ai donc essayé en laissant la première cellule de la plage, vide ou en inscrivant un entête et ça fonctionne alors.

Discussions similaires

  1. [XL-2013] Ann = InputBox Mess
    Par pilounet54 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 20/11/2013, 16h54
  2. [VB6]Aide pour mettre format date avec inputbox
    Par Geliwy77 dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 28/01/2006, 20h13
  3. InputBox & export .xls
    Par fabrice518 dans le forum Access
    Réponses: 2
    Dernier message: 23/09/2005, 11h03
  4. Réponses: 10
    Dernier message: 26/08/2005, 08h17
  5. [MFC] Les InputBox
    Par Philippe299 dans le forum MFC
    Réponses: 4
    Dernier message: 24/08/2005, 07h19

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