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

cb84 -  
 cb84 -
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
A voir également:

11 réponses

f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 715
 
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
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 715
 
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
cb84
 
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
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 715
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cb84
 
Pour la cellule j'ai le format 00/00/0000 et les données proviennent de la textbox1
0
cb84
 
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
cb84
 
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
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 715
 
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
cb84
 
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
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 715
 
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
cb84
 
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