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 :

Date dans textbox [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2009
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 78
    Par défaut Date dans textbox
    Bonjour,
    je souhaite en fonction de la date saisie dans mon textbox, supprimer toutes les lignes qui ont en colonne A une date supérieure à la date dans mon textbox

    voici le début de mon code, suis-je sur la bonne voie? je pense me tromper sur le format de la date


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each Cellule In Range("a5:a" & Cells(Columns(1).Cells.Count, 1).End(xlUp).Row)
            If Cellule.value >=  Userform2!TextBox1 Then ActiveCell.EntireRow.Delete
        Next Cellule
    merci de votre aide

  2. #2
    Membre confirmé
    Inscrit en
    Octobre 2009
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 78
    Par défaut
    j'ai un peu avancé
    voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each Cellule In Range("a5:a" & Cells(Columns(1).Cells.Count, 1).End(xlUp).Row)
            If Cellule.Value = CDate(UserForm2!TextBox1.Value) Then ActiveCell.EntireRow.Delete
        Next Cellule
    mais c'est pas encore satisfaisant
    il repere pas la valeur de la text box
    pouvez vous m'aider?

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut luko6 et le forum
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each Cellule In Range("a5:a" & Cells(Columns(1).Cells.Count, 1).End(xlUp).Row)
            If Cellule.Value = CDate(UserForm2!TextBox1.Value) Then ActiveCell.EntireRow.Delete
        Next Cellule
    Pour chaque cellule de la plage
    si Cellule = conversion en date de TextBox1 alors
    Supprimer la ligne entière de la cellule active... qui peut être n'importe laquelle, même la cellule IV65536
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each Cellule In Range([A5], Cells(Rows.Count, "A").End(xlUp))
            If CDate(CLng(Cellule)) = CDate(UserForm2!TextBox1) Then Rows(Cellule.row).Delete
        Next Cellule
    Attention, je n'ai pas testé
    - Je n'aime pas employer des noms qu'Excel peut utiliser (comme Cellule) sous risque de créer une erreur.
    - Columns(1).cells.count donne le nombre possible de cellules de la colonne A, qui est le même que le nombre de lignes que la feuille.
    - Tu t'affranchis du Select/Selection, ce qui est super. Mais n'oublie pas que ta sélection n'a plus rien à voir avec la cellule sur laquelle tu est en train de travailler => ça peut conduire à supprimer n'importe quelle ligne dès que tu trouves une correspondance.

    Ne connaissant pas tes données, juste une supposition.
    Dans ta TextBox tu mets une date => Cdate transforme ton texte en une date : un nombre entier qu'il interprète comme une date.
    Dans ta colonne A, il faut donc que les dates soient des nombres entiers. il y a toujours une infinité de possibilité, j'en ai choisi une.
    A+

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2009
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 78
    Par défaut
    merci pour ta réponse.

    ma colonne A est deja sous forme de date
    donc mon code est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each Cellule In Range([A5], Cells(Rows.Count, "A").End(xlUp))
            If (Cellule) = CDate(UserForm2!TextBox1) Then Rows(Cellule.Row).Delete
        Next Cellule
    ça a l'air de marcher sauf que mon code s'arrete en cours alors qu'il reste des dates
    je dois relancer le code PLUSIEURS fois pour les supprimer totalement.
    comment cela se fait?

    aussi je voudrais supprimer toutes les lignes dont la date est apres la date de mon textbox et non "=" comme actuellement

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 517
    Par défaut
    Salut,

    le plus simple et le plus rapide reste probablement de constituer une plage des lignes qu'il convient de supprimer et de ne le faire qu a la fin. Utiliser pour cela Application.Union.- Cette maniere de faire evitera les crocs en pattes generalement generes par le suppressions au fur et a mesure.

  6. #6
    Membre confirmé
    Inscrit en
    Octobre 2009
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 78
    Par défaut
    le probleme c'est que ma plage de données est variable
    c'est pourquoi je passe par un textbox ou je peux saisir la date que je souhaite

  7. #7
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonjour,
    pour les suppressions de lignes, il faut commencer par la fin et remonter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim i As Long
    For i = Cells(Rows.Count, "A").End(xlUp).Row To 5 Step -1
        If DateDiff("d", Range("A" & i).Value, CDate(UserForm2!TextBox1)) > 0 Then Rows(i).Delete
    Next i

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comparaison Dates dans textbox
    Par lafafmentvotre dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 20/10/2009, 10h39
  2. date dans textbox
    Par manime dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 01/10/2009, 20h50
  3. afficher la date dans textbox
    Par sky88 dans le forum VB.NET
    Réponses: 1
    Dernier message: 22/07/2009, 16h59
  4. Masque de saisie date dans textbox
    Par akmer dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 08/08/2008, 13h15
  5. afficher dates dans textbox d'un Userform
    Par newsinfos dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 19/11/2007, 10h41

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