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 :

Création Macro pour supprimer des lignes après tests conditionnels


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 55
    Points : 20
    Points
    20
    Par défaut Création Macro pour supprimer des lignes après tests conditionnels
    Bonjour à tous,

    Pour faire simple, j'ai une base de données avec du texte en colonne B et une quantité en I/J (cellule fusionnée) + des lignes vierges de tps en tps

    Je cherche à créer une macro qui supprime certaines lignes dans mon fichier, sous les 2 conditions suivantes :
    - la ligne contient du texte en B
    - la ligne contient la valeur 0 en I/J

    C'est une macro simple, mais je ne connais plus mes codes VBA . Ca fait bien trop lgtps que je n'ai plus pratiqué.

    Merci bcp pour votre aide!

  2. #2
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    bonjour,
    un exemple. On parcours de la derniere ligne jusqu' à la ligne 2.
    Si il y a quelque chose en B et 0 en I alors on suuprime la ligne entière:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    derniereligne = Range("A1").SpecialCells(xlCellTypeLastCell).Row
    For i = derniereligne To 2 Step -1
    If Range("B" & i).Value <> "" And Range("I" & i).Value = "0" Then Rows(i).EntireRow.Delete
    Next i
    @+

    Si vous avez trouvé la solution à votre problème n'oubliez pas d'appuyer sur
    Et n'oubliez pas de voter en appuyant sur si ce message a repondu à vos attentes.
    Ou sur si ce n'est pas le cas

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 55
    Points : 20
    Points
    20
    Par défaut
    Merci de ta réponse rvtoulon!

    Pour que ta macro marche, il faut que je définisse les variables avant
    notamment i et derniereligne

    Si tu pouvais m'indiquer le code à utiliser pour cela, ca serait super!

    Merci d'avance

  4. #4
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonsoir,
    Puisque tu travaille entre autres sur la colonnes B tu peu faire cela (en partant du code d'Hervé) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    For i = [B65536].End(xlUp).Row To 2 Step -1
    If Range("B" & i).Value <> "" And _
       Range("I" & i).Value = "0" Then Rows(i).EntireRow.Delete
    Next i
    Hervé

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 55
    Points : 20
    Points
    20
    Par défaut
    Merci de ta réponse Hervé.
    Mais j'ai toujours le problème de la définition de variable.
    Si tu pouvais m'indiquer la première ligne du code à saisir pour définir la variable

    Thank in advance!

  6. #6
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Bonjour,
    en début de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    sub Tamacro ()
    Dim derniereligne as Integer
    Dim i as integer
    @+

    Si vous avez trouvé la solution à votre problème n'oubliez pas d'appuyer sur
    Et n'oubliez pas de voter en appuyant sur si ce message a repondu à vos attentes.
    Ou sur si ce n'est pas le cas

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 55
    Points : 20
    Points
    20
    Par défaut
    J'ai essayé vos 2 macros et cela n'a rien donné.
    (avec les variables définies en Long et Integer, car certains forums préconisaient le type Long aussi).

    Ce qui est bizzaire, c'est que je n'ai eu aucun message d'erreur et aucune activation du débuggueur. Je ne peux donc pas savoir d'où vient le problème et comment le résoudre!

    Par ailleurs, j'ai testé cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For i = [B1048576].End(xlUp).Row To 2 Step -1
    au lieu de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For i = [B65536].End(xlUp).Row To 2 Step -1
    J'ai vu sur un forum que pour Excel 2007 (celui que j'utilise), il fallait mettre le numéro de la ligne maximum, à savoir 10 485 576. Cela n'a pas marché et m'a renvoyé l'erreur "424" avec objet requis.

    Merci d'avance pour votre aide!
    C'est vraiment important!

    Et surtout bon réveillon de Noël à tous!

  8. #8
    Membre confirmé
    Avatar de Bigalo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 445
    Points : 563
    Points
    563
    Par défaut
    Bonsoir,

    Chez moi le test fonctionne sans problème !

    Dans les 2 propositions, il y a un élément que je trouve bizarre : c’est de tester "0", qui est du texte plutôt que 0, le nombre, mais cela ne devrait pas suffire à empêcher le code de fonctionner.

    Bien évidemment, si tu écris le code en utilisant la lettre "o", même en majuscule, aucune ligne contenant zéro ne sera repérée, mais sauf distraction extrême, je suppose que ce n’est pas le cas.

    il fallait mettre le numéro de la ligne maximum, à savoir 10 485 576
    Il ne faut pas répéter le chiffre 5. Excel est passé avec la version 2005 de 65536 lignes (2 puissance 16) à 1 048 576 (2 puissance 20).

    Essaye de repérer une ligne qui selon toi devrait être supprimée, sélectionne une cellule quelconque de la ligne, et lance ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub Test()
        If Range("B" & ActiveCell.Row) <> "" And Range("I" & ActiveCell.Row) = 0 _
        Then ActiveCell.EntireRow.Select
    End Sub
    en pas à pas. Pour ce faire, appuie sur la touche F8 pour sélectionner la première instruction, puis à nouveau sur F8, …

    À l’issue du test (« End Sub » doit alors être sélectionné par le dernier F8), si la ligne entière n’est pas sélectionnée, surligne « Range("B" & ActiveCell.Row) <> "" » et appuis sur Maj + F9. Ceci fera apparaître une fenêtre reprenant l’expression testée avec le résultat qui en découle (Vrai ou Faux). Recommence avec « Range("I" & ActiveCell.Row) = 0 »

    Le résultat de ces 2 tests devrait t’aider à détecter la source du problème.
    Michel Gaboly
    Développeur Excel et VBA


    Pas de question technique par MP, je n’y répondrai pas, utilisez le forum - Merci
    Pensez à ajouter le tag

  9. #9
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 764
    Points : 28 622
    Points
    28 622
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pour pallier au problème du nombre de lignes qui est différent suivant les versions.
    J'utilise cette instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For i = Range("B" & Rows.Count).End(xlUp).Row To 2 Step -1
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 55
    Points : 20
    Points
    20
    Par défaut
    Merci Corona pour ta solution.
    Je l'ai ajouté à la macro. Cela fait déjà une source d'erreurs en moins.

    Pour le test que tu me proposes Bigalo, je l'ai testé.
    Et il me renvoie les résultats suivant

    La première partie de l'instruction « Range("B" & ActiveCell.Row) <> "" » me renvoie la valeur FAUX alors que je suis sur une ligne avec la cellule B remplie. Donc cette instruction n'est à priori pas correct. Si certains d'entre vous ont des suggestions, ca serait super!

    La seconde partie de l'instruction « Range("I" & ActiveCell.Row) = 0 » me renvoie le commentaire "Hors du contexte". Merci de m'éclairer sur ce point.

    Merci pour votre aide Corona et Bigalo!

  11. #11
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 764
    Points : 28 622
    Points
    28 622
    Billets dans le blog
    53
    Par défaut
    Bonsoir,
    Il me semble que tu as reçu des réponses positives plus haut ou alors je n'ai rien compris.
    Pour supprimer toutes les lignes contenant du texte en B, ET ayant 0 en colonne I ET J
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    For i = Range("B" & Rows.Count).End(xlUp).Row To 2 Step -1
      If Range("B" & i) <> "" And Range("I" & i) = "0" And Range("j" & i) = "0" Then
        Rows(i).EntireRow.Delete
      End If
     Next
    Si tu considères qu'une cellule vide en I & J est équivalent à 0 il faut tester avec ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Range("B" & i) <> "" And Range("I" & i) = 0 And Range("J" & i) = 0 Then
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 55
    Points : 20
    Points
    20
    Par défaut
    Effectivement Corona, j'ai bien reçu des réponses.
    D'ailleurs, je vous en remercie!!

    Le problème est que ça ne marche pas.
    J'essaie donc de comprendre pourquoi.

    J'ai posté les résultats du test que m'a proposé Bigalo.
    Peut-être cela pourra-t-il vous aider à me faire des suggestions

    Merci d'avance pour votre aide!

  13. #13
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonsoir,
    remarque peut-être bête mais à voir pour une erreur de syntaxe :

    est-ce la lettre "O" ou le chiffre 0, ou cellule vide, donc vérifiez ce morceau de code ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Range("b" & i) = "" And Range("I" & i) = "0" Then
    contre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Range("b" & i) = "" And Range("I" & i) = 0 Then
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not IsEmpty(Range("b" & i)) And Range("I" & i) = 0 Then
    à tout hasard....

    Bonne soirée
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  14. #14
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Bonjour,
    une remarque sur le code que j'ai donné plus haut pourquoi j'ai mis zéro entre parenthèse "0".
    Si on fait le test la macro considère le zéro comme ci la cellule est vide donc qu'il y ai un zéro ou pas elle efface toute les cellules ou il y a soit un zéro soit rien. Par contre si je met le zéro entre parenthèse le problème est réglé.
    Si on reprend le problème au début :
    Je cherche à créer une macro qui supprime certaines lignes dans mon fichier, sous les 2 conditions suivantes :
    - la ligne contient du texte en B
    - la ligne contient la valeur 0 en I/J
    alors ce code fonctionne en tenant compte de vos suggestions:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub test()
    Dim derniereligne As Long, i As Long
    derniereligne = Sheets("feuil1").Range("B" & Rows.Count).End(xlUp).Row
    With Sheets("feuil1")
    For i = derniereligne To 2 Step -1
    If .Range("B" & i).Value <> "" And .Range("I" & i).Value = "0" Or .Range("J" & i).Value = "0" Then .Rows(i).EntireRow.Delete
    Next i
    End With
    End Sub
    Remarque: J'ai indiqué le nom de la feuille dans laquelle la macro doit faire les opérations demandées, remplace feuil1 dans le code par le nom de la feuille ou tu veux faire les opérations, sinon c'est vrai ça ne marche pas.

    EDIT: comme la condition concerne apparemment les colonnes I et J j'ai rajouté un "Or" mais il faut adapter a ce que tu veux faire.
    @+

    Si vous avez trouvé la solution à votre problème n'oubliez pas d'appuyer sur
    Et n'oubliez pas de voter en appuyant sur si ce message a repondu à vos attentes.
    Ou sur si ce n'est pas le cas

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 55
    Points : 20
    Points
    20
    Par défaut
    Voici les dernières versions de la macro que j'ai pu écrire.
    Il y a surtout ta solution Casefayere, qui marche plus ou moins bien. (Macro RowsDelete)

    Ta version stricte n'est pas bonne.
    J'ai modifié la "formulation" de l'objet Sheet (dans une macro RowsDelete1) et il y a du mieux. Mais je reçois une erreur d'exécution "13".

    Je pense que ce sera plus simple pour vous de m'aider avec le fichier.
    Je vous joins donc le fichier (à télécharger à partir de ce lien) sur lequel vous pourrez tester vos solutions. Parce qu'elle ne marchent pas vraiment chez moi! Et pourtant la syntaxe semble correct.

    Voici le lien : http://dl.free.fr/getfile.pl?file=/Jv8Tofp1

    NB : IL y a eu une légère modification sur le fichier. Maintenant la cellule que l'on cherche à tester est la cellule C (et non plus la B). Je l'ai déjà intégrer dans les macros.

    Enfin, la macro RowsDelete2 intègre une ligne de code supplémentaire, qui gèrera la suppression des menus déroulants.

    Si vous avez des questions, n'hésitez pas à me demander! Merci vraiment pour votre aide!

  16. #16
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 764
    Points : 28 622
    Points
    28 622
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Ton problème d'erreur 13 provient lorsque la procédure fait un test sur la valeur de la cellule de la colonne L720 qui contient une erreur( #REF). Cette cellule contenant une formule qui somme des lignes ' =SOMME(L721:L754)' une ou plusieurs des cellules se trouvant dans ces lignes contiennent elles même des erreurs qui proviennent du fait que des cellules font références à d'autres qui se trouvaient sur des lignes que la procédure a supprimé.
    Attends toi à d'autres soucis.
    Comment vas-tu reconstruire les formules après l'exécution du code ?
    Je ne connais pas la problématique totale de ton projet mais n'aurais-tu pas intérêt à utiliser un modèle pour faire ton travail ce qui te permettrait de repartir d'un fichier vierge.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If ActiveSheet.Range("C" & i).Value <> "" And ActiveSheet.Range("L" & i).Value = "0" Then
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 55
    Points : 20
    Points
    20
    Par défaut
    Oui j'ai compris le souci et j'ai pu le corriger.

    Ce genre de problème n'en est pas un au final, puisque je peux à la rigueur changer de colonne le total. La construction du fichier est assez souple en fait.

    Ce qui me posait problème en revanche était le codage de la macro.
    Merci de votre aide.

    Je vous tiens au courant si j'ai d'autres soucis!
    Je ne manquerais pas de poster sur ce thread.

    Bonnes fêtes de fin d'année à tous!

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 55
    Points : 20
    Points
    20
    Par défaut
    Bonjour à tous,

    Après avoir planché durement sur mon fichier, j'ai réussi à avoir un code VBA enfin valide pour l'exécution de la macro, ainsi qu'à corriger les lignes du fichier pour que la macro s'exécute parfaitement.

    Cependant, après la suppression des lignes, il me reste les menus déroulants. En effet, certaines lignes intègrent un menu déroulant et l'objectif est de les supprimer avec la ligne.

    J'ai donc rajouter une ligne supplémentaire dans le code VBA :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim derniereligne As Long, i As Long
    
    derniereligne = Sheets("SAISIE").Range("C" & Rows.Count).End(xlUp).Row
    
    Sheets("SAISIE").Select
    
    For i = derniereligne To 2 Step -1
    If ActiveSheet.Range("C" & i).Value <> "" And ActiveSheet.Range("L" & i).Value = "0" Then
     ActiveSheet.Shapes("Zone combinée" & i).Delete
     ActiveSheet.Rows(i).EntireRow.Delete
    Next i
    
    End Sub
    Cette ligne de code devrait normalement supprimer le menu déroulant (pour info, il s'agit techniquement d'une "zone de liste déroulante - contrôle formulaire") qui porte le numéro de la liste. De cette façon, après test de la ligne, si la ligne doit être supprimée, le menu déroulant de la liste sera supprimé aussi.

    Ce code VBA ne marche pas et je reçois l'erreur "Next sans For" quand j'exécute la macro précédemment citée (sachant que quand je l'exécute sans la ligne de code en rouge, elle marche et supprime correctement les lignes).

    Voici le fichier avec les 2 macros :
    - RowsDelete1 (la macro sans la ligne de code rouge - qui supprime uniquement les lignes)
    - RowsDelete2 (la macro avec la ligne de code rouge - qui devrait supprimer également les menus déroulants)


    http://dl.free.fr/p7t0KfkKc


    Merci de me dire si le code VBA contient une erreur ou de tester la macro!

    Merci d'avance pour votre aide!

  19. #19
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For i = derniereligne To 2 Step -1
    If ActiveSheet.Range("C" & i).Value <> "" And ActiveSheet.Range("L" & i).Value = "0" Then
    ActiveSheet.Shapes("Zone combinée" & i).Delete
    ActiveSheet.Rows(i).EntireRow.Delete
    Next i
    ici il manque "End if" au dessus de next i
    @+

    Si vous avez trouvé la solution à votre problème n'oubliez pas d'appuyer sur
    Et n'oubliez pas de voter en appuyant sur si ce message a repondu à vos attentes.
    Ou sur si ce n'est pas le cas

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 55
    Points : 20
    Points
    20
    Par défaut
    J'ai rajouté le "End If" mais cela ne marche toujours pas.

    Il me renvoie l'erreur suivante :
    "Erreur d'exécution '-2147024809(80070057)':
    L'élément portant ce nom est introuvable"

    Si quelqu'un pouvait jeter un coup d'œil au fichier ou m'en dire plus, cela serait sympa!

    Merci d'avance

Discussions similaires

  1. [XL-2013] Macro pour supprimer des lignes suivant des critères données
    Par Malick dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/07/2014, 14h35
  2. Une macro pour supprimer des lignes dans un message
    Par blade2a dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 26/06/2012, 01h26
  3. [XL-2007] Macro pour supprimer des lignes sous conditions de valeur de cellule
    Par frisco75 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/09/2011, 14h33
  4. macro excel pour supprimer des lignes comportant un caractere spécial
    Par fredo49 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/04/2011, 16h32
  5. Shell pour supprimer des lignes d'un fichier
    Par nelsa dans le forum Autres langages
    Réponses: 2
    Dernier message: 20/09/2004, 12h26

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