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 :

Macro suppression de lignes en fonction de dates communiquées


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2018
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Septembre 2018
    Messages : 36
    Points : 12
    Points
    12
    Par défaut Macro suppression de lignes en fonction de dates communiquées
    Bonjour,

    Le problème est exposé dans le titre, maintenant mon code ne fonctionne pas et j'aimerai bien savoir pourquoi.

    Merci d'avance de votre aide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
      Dim StDate, FinDate As Variant
     
     
        Dim i As Integer
     
        StDate = InputBox("Beginning Date ?")
        FinDate = InputBox("Ending Date ?")
     
        For i = 2 To ThisWorkbook.ActiveSheet.UsedRange.Rows.Count
          If Cells(i, 5) <= StDate Or Cells(i, 5) >= FinDate Then
    Rows(i).EntireRow.Delete
        Next i
    End Sub

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Lordvoldman Voir le message
    Bonjour,

    Il faut commencer votre boucle par la fin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     For i =  ActiveSheet.UsedRange.Rows.Count To 2 Step -1

  3. #3
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Parce que tes variables StDate et FinDate ne sont pas des dates mais des chaines de caractères.
    Surtout que tu les as déclarées de type Variant.

    Déclare-les de type Date.
    Englobe tes InputBox dans une fonction CDate ou DateValue.
    https://docs.microsoft.com/fr-fr/off...sion-functions
    https://docs.microsoft.com/fr-fr/off...value-function

    A faire bien sûr en complément de ce qu'à indiquer Eric KERGRESSE ( ).
    Une procédure de suppression ou d'insertion de ligne doit TOUJOURS se faire du bas vers le haut, pour des raisons tout à fait logiques que je te laisse le plaisir de découvrir.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2018
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Septembre 2018
    Messages : 36
    Points : 12
    Points
    12
    Par défaut
    Merci de votre réponse.

    Cette fois ci ça m'efface toutes mes lignes..

  5. #5
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2018
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Septembre 2018
    Messages : 36
    Points : 12
    Points
    12
    Par défaut
    C'est parfait!
    Merci beaucoup Menhir.

  6. #6
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Lordvoldman Voir le message
    Cette fois ci ça m'efface toutes mes lignes..
    Change ton "Or" en "And".

  7. #7
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2018
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Septembre 2018
    Messages : 36
    Points : 12
    Points
    12
    Par défaut
    Maintenant le code fonctionne. J'ai essayé d'affecter cette macro à un bouton sur la feuille 1 qui récupérera les valeurs de textbox dans la feuille 1 ( mais qui agira sur les colonnes de la feuille 2 ), je n'y arrive pas. ça me supprime des lignes de la feuille 1 au lieu de la feuille viséee feuille 2.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub CommandButton21_Click()
    Dim StDate, FinDate As Date
     
    Dim i As Integer
        StDate = DateValue(Worksheets("Feuil1").Startdte)
        FinDate = DateValue(Worksheets("Feuil1").Enddte)
     
       For i = Worksheets("Feuil2").UsedRange.Rows.Count To 2 Step -1
          If Cells(i, 5) <= StDate Or Cells(i, 5) >= FinDate Then
    Rows(i).EntireRow.Delete
        End If
         Next i

  8. #8
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 951
    Points : 5 179
    Points
    5 179
    Par défaut
    essayer avec :
    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
    Private Sub CommandButton21_Click()
    Dim StDate, FinDate As Date
     
    Dim i As Integer
        StDate = DateValue(Worksheets("Feuil1").Startdte)
        FinDate = DateValue(Worksheets("Feuil1").Enddte)
     with sheets("feuil2")
    .activate
       For i = .UsedRange.Rows.Count To 2 Step -1
          If .Cells(i, 5) <= StDate Or .Cells(i, 5) >= FinDate Then
    Rows(i).EntireRow.Delete
        End If
     
         Next i
    end with

  9. #9
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Lordvoldman Voir le message
    ça me supprime des lignes de la feuille 1 au lieu de la feuille viséee feuille 2.
    Si tu n'indiques pas à quel Worksheet appartiennent les Cells ou Range, VBA considère qu'il s'agit de ceux de la feuille active.
    De même, si tu indiques une Worksheet (onglet) sans préciser son Workbook (classeur), VBA considère qu'il appartient au classeur actif.

Discussions similaires

  1. [XL-2007] macro suppression de ligne en Fonction de couleur de cellule et vide
    Par duha2_fr dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/01/2018, 17h08
  2. Macro Excel: Masquer ligne en fonction
    Par henrynv dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/06/2012, 17h38
  3. [XL-2000] Adapter une macro (suppression de ligne si = 0)
    Par wyzer dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/03/2010, 21h53
  4. Macro suppression de ligne
    Par malabarbe dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/06/2008, 15h21
  5. Suppression de ligne en fonction d'une colonne
    Par PPLILH2008 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 23/06/2008, 10h43

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