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 :

Boucle ou protection defaillante ?


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    EMPLOYER
    Inscrit en
    Août 2016
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : EMPLOYER
    Secteur : Alimentation

    Informations forums :
    Inscription : Août 2016
    Messages : 102
    Points : 41
    Points
    41
    Par défaut Boucle ou protection defaillante ?
    Bonsoir
    cette macro ne fonctionne pas totalement elle ne supprime pas les les lignes dont la date est périmé
    merci d'avance
    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
    Private Sub Workbook_Open()
        Dim xl As Excel.Application
        Dim ligne As Range, lignes_à_supprimer As Range
        Dim date_i As Date
     
        Set xl = Application
        With Sheets("MATRICE")
            .Unprotect
            For Each ligne In .UsedRange.Rows
                If Join(xl.Transpose(xl.Transpose(ligne.Value)), "") = Empty _
                Or (IsDate(ligne.Columns("E")) And ligne.Columns("E") < Date) Then
                    If lignes_à_supprimer Is Nothing Then Set lignes_à_supprimer = ligne.EntireRow _
                    Else Set lignes_à_supprimer = Union(lignes_à_supprimer, ligne.EntireRow)
                End If
            Next ligne
            If Not lignes_à_supprimer Is Nothing Then lignes_à_supprimer.Delete
            .Protect DrawingObjects:=False, Contents:=True, Scenarios:=True
        End With
    End Sub

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    Il n'y a aucune raison dans ton code pour qu'il ne fonctionne pas.
    La raison est donc probablement dans tes données et non dans ton code.

    Je suis par ailleurs assez surpris de ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     If Join(xl.Transpose(xl.Transpose(ligne.Value)), "") = Empty _
                Or (IsDate(ligne.Columns("E")) And ligne.Columns("E") < Date) Then
    qui recense toutes les lignes entièrement vides ou dont ce qui s'y trouve en colonne E est une date valide et que cette date est < que celle d'aujourd'hui
    Ne te parait-il pas qu'il suffit dans ce cas du seul parcours de la colonne E pour y recenser les valeurs "" ou etc ... ?
    Rassure-moi : tu n'as pas utilisé ta colonne E pour y mettre également d'autres données que des dates ?
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  3. #3
    Membre du Club
    Homme Profil pro
    EMPLOYER
    Inscrit en
    Août 2016
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : EMPLOYER
    Secteur : Alimentation

    Informations forums :
    Inscription : Août 2016
    Messages : 102
    Points : 41
    Points
    41
    Par défaut
    Bonjour merci pour ton interet
    je te joint mon fichier dans le quel j'utilise uniquement un userform pour alimente ma feuil
    il y a que des dates dans la colonne datePURGE .xlsm

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Tu me vois désolé, mais je n'ouvre jamais un classeur tiers.
    Je pars par ailleurs du principe selon lequel chacun est capable d'exposer clairement et techniquement ce qu'il a conçu (le contexte) et la difficulté rencontrée.
    S'il n'est pas en mesure de le faire, cela veut alors dire pour moi que ce qu'il conçoit est aussi infirme que ce qu'il expose.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  5. #5
    Membre du Club
    Homme Profil pro
    EMPLOYER
    Inscrit en
    Août 2016
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : EMPLOYER
    Secteur : Alimentation

    Informations forums :
    Inscription : Août 2016
    Messages : 102
    Points : 41
    Points
    41
    Par défaut
    un bon dessin vaux mieux qu' un long discours
    mon niveau ne me permet pas de me dépatouiller par moi même et par voie de conséquence je sollicite l' entraide ici
    cordialement

  6. #6
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    un bon dessin vaux mieux qu' un long discours
    mon niveau ne me permet pas de me dépatouiller par moi même et par voie de conséquence je sollicite l' entraide ici
    Et où est le "dessin" (avec quelles explications) ????
    Désolé (vraiment désolé), mais si par "dessin" tu entends "classeur", --->> pas question pour moi de te suivre !
    D'autres, peut-être ?
    Adieu.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  7. #7
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut
    Bonjour,

    comme indiqué dans le tutoriel sur l'environnement du VBA, une fois les lignes à supprimer repérées,
    suivre la progression du code en mode pas à pas via la touche F8
    tout en contrôlant le contenu de la fenêtre des Variables locales, cela doit aider à trouver la bourde …

    Evidemment au préalable les dates auront été vérifiées comme telles, c'est à dire en nombre et pas en texte.
    Et c'est simple à vérifier en basculant l'affichage en mode formules, les vraies dates passent en nombre,
    et ce que l'on croit être des dates mais qui n'en sont pas restent affichées en - fausses - dates …

    (classeur avec du code : non merci !)

    _________________________________________________________________________________________________________
    Je suis Paris, Nice, Bruxelles, Charlie, …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

Discussions similaires

  1. [XSLT] Faire une boucle sur une variable [i]
    Par PoT_de_NuTeLLa dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 07/06/2010, 12h45
  2. La meilleure protection contre le piratage des logiciels ?
    Par iubito dans le forum Débats sur le développement - Le Best Of
    Réponses: 184
    Dernier message: 23/12/2008, 13h35
  3. Sortir d'un progamme qui boucle ou qui refresh
    Par mikevador02 dans le forum C
    Réponses: 12
    Dernier message: 14/12/2002, 09h38
  4. [VBA-E] [Excel] Protection d'une plage de cellules
    Par fikou dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/11/2002, 11h28
  5. Réponses: 2
    Dernier message: 29/05/2002, 20h43

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