Selectionner des lignes en fonction d'un mois extrait d'une date de TextBox

Bonjour aux spécialistes vba et aux autres,

Je suis en train de réaliser un fichier Excel avec VBA et je bute sur la sélection des données sur un mois
Mon fichier liste par date "01/01/2021" des données chiffrées
Cette liste provient d'une autre feuille qui extrait les données journalière via une date dans une textbox, date que je retrouve dans la colonne A
Je veux en utilisant un bouton "mois" récupérer toutes les données du mois concerné, sous le même format, et effacer les autres données précédentes et suivantes.
En fait je coince sur l'extraction du "mois année" qui me permet de comparer et supprimer les lignes indésirables.
J'ai essayé via le like ou le = mais c'est le format qui coince

Je bricole un peu sur vba mais la je bloque !

Je remercie celui qui pourra m'aider

Christian

11 réponses

  1. Bonjour,
    Vous ne répondez pas a la question:
    le format de la cellule est date, personnalisée ou texte.

    Pour mettre un point d'arrêt sur le VBA.:
    placez le curseur souris sur la bande verticale grise au niveau de la ligne de code
    If Cells(i, 1) Like cejour Then 

    Lancez votre UF, faites en sorte que le code qui nous intéresse se déroule jusqu'au point d'arrêt.
    A ce stade, passez le curseur souris sur
     cejour
    et
    Cells(i, 1)
    pour voir leur contenu. Ainsi vous saurez ce qui coince
    1
    1. Bonjour,

      mais c'est le format qui coince
      Difference de formats ou ???
      Textebox= texte
      Cellule= texte ou date?

      Savez-vous mettre un point d'arret au niveau du code?
      0
      1. Bonjour,
        Merci de votre retour

        Je fais référence à une textBox du format date xx/xx/xxxx textbox1
        Voici le code de la routine

        'sélection les jours du mois concerné
        cejour = Format(TextBox1, "mm yyyy")
        DerLig = ActiveSheet.Range("A65500").End(xlUp).Row
        For i = DerLig To 1 Step -1
        If Cells(i, 1) Like cejour Then
        Cells(i, 1).EntireRow.Delete
        End If
        Next i

        En fait je cherche à supprimer les dates qui ne correspondent pas au mois sélectionné
        0
        1. Re,
          Oui, mais au niveau cellule feuille, quel est le format?
          Quand vous selectionnez la cellule, qu'est ce qu'il y a dans la barre de formule
          0
          1. Pour la cellule j'ai le format 00/00/0000 et les données proviennent de la textbox1
            0
            1. Bonjour,
              Merci de votre réponse, je ne connaissais pas cette possibilité, j'ai appris sur le tas.
              Concernant cejour j'ai 05/02/2021 et Cells(i, 1) j'ai 01/2021
              Il s'agit de format Date, j'ai essayé en mettant
              cejour = Format(TextBox1, "*mm yyyy*") mais la non ca ne marche pas (aucune ligne effacé) et pourtant j'ai des lignes dans ma feuille de janvier et février
              Merci de votre retour
              Christian
              0
              1. Bonjour,
                Pour compléter j'ai fait un test en mettant à la place de Like, <> et la il me supprime toute les lignes de ma feuille sauf celle ou j'ai fait un total et qui en A à le format date "mmmm yyyy".
                0
                1. Re,
                  Et c'est ce que vous voulez?

                  cejour j'ai 05/02/2021 : impossible avec
                  cejour = Format(TextBox1, "mm yyyy")
                  ou vous avez change le code et de toute facon c'est forcement du texte: "05/02/2021" pas une date

                  Pour ceci Cells(i, 1) j'ai 01/2021 qu'en est-t-il?
                  Pourquoi y a pas de jour?
                  0
                  1. J'ai dans la colonne A une liste de date sous format 00/00/0000
                    Et je veux qu'il me selectionne toutes les lignes qui correspondent à 00/0000 et qu'il vire les autres, ensuite je fais le total des colonnes pour un mois donné.
                    En fait je cherche le moyen via une TextBox que j'utilise déja sur d'autres feuilles de sélectionner uniquement les lignes de données du mois qui est indiqué dans la texteBox.
                    0
                    1. Re,

                      un exemple: test sur moi et annee.
                      Par contre a adapter en fonction des formats de la Textbox1 et de vos cellules.
                      Sub test()
                          Textbox1 = "05/01/2021"
                          With Worksheets("feuil1")
                              derlig = .Range("A" & .Rows.Count).End(xlUp).Row
                              For i = derlig To 1 Step -1
                                  If Right(CStr(.Cells(i, 1)), 7) <> Right(Textbox1, 7) Then
                                      .Cells(i, 1).EntireRow.Delete
                                  End If
                              Next i
                          End With
                      End Sub
                      
                      0
                      1. Wouah
                        Cela fonctionne parfaitement

                        J'ai trouvé une solution alternative en passant par une colonne supplémentaire ou je mets "mmmm yyyy" et je suis arrivé a le faire fonctionner mais votre solution est beaucoup plus élégante.
                        Merci pour tout

                        Christian
                        0