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 :

Suppression de ligne avec Formula


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Septembre 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Septembre 2014
    Messages : 58
    Par défaut Suppression de ligne avec Formula
    Bonjour à tous,

    J'ai le code suivant qui me permet de supprimer des lignes dans les deux feuilles du fichier ci-joint.
    Le problème est que les données permettant la suppression dans la feuille 1 sont issues d'une formule =Feuil2$B2 par ex.
    Comment je peux faire pour qu'Excel comprenne que je veux supprimer une ligne en fonction de ce que contient le résultat d'une formule dans une cellule dans la colonne A par ex?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Bouton1_Cliquer()
    Editeur = InputBox("Veuillez entrer l'editeur à supprimer ?", "Welcome", "Prenom Nom")
    With Worksheets("Feuil2")
        For i = .Range("B" & Rows.Count).End(xlUp).Row To 2 Step -1
            If .Range("B" & i).Value = Editeur Then .Rows(i).Delete shift:=xlUp
       Next i
    End With
    '
    With Worksheets("Feuil1")
        For i = .Range("A" & Rows.Count).End(xlUp).Row To 2 Step -1
            If .Range("A" & i).Value FORMULA = Editeur Then .Rows(i & ":" & i + 1).Delete shift:=xlUp
        Next i
    End With
    End Sub
    ==> J'ai tenté avec Formula mais ne vois pas comment structurer la ligne de code.

    Merci de votre aide!
    Alain
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

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

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Bonjour,
    Pourquoi n'écris-tu pas tout simplement .Range("A" & i).Value = Editeur ?
    .Value permet de lire la valeur de la cellule. Même s'il y a une formule, on obtiendra le "résultat" de la formule. Ça ne change rien, le fait qu'il y ait une formule.

  3. #3
    Membre averti
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Septembre 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Septembre 2014
    Messages : 58
    Par défaut
    Parce que quand je mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If .Range("A" & i).Value = Editeur Then .Rows(i & ":" & i + 1).Delete shift:=xlUp
    J'ai le débogueur qui me dit qu'il y a une erreur dans le code en gras ci-dessus d'une part et que d'autre part, Excel ne supprime pas les lignes dans la feuille 1 comme exemple dans le fichier joint.

    C'est pour cela que je me suis orienté vers une formula mais selon toi ça n'est pas la solution?

    test.xlsm

  4. #4
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

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

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Formula ne me paraît pas être la bonne solution dans ton cas, car cette fonction renvoie la formule qui est écrite dans la cellule et pas la valeur de la cellule : https://msdn.microsoft.com/fr-fr/lib.../ff838835.aspx
    Pourrais-tu nous dire quelle est l'erreur que tu obtiens, stp?

    Est-ce que la 1ère partie de ton code (avec Feuil2) marche, mais pas la 2ème (avec Feuil1)?

  5. #5
    Membre averti
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Septembre 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Septembre 2014
    Messages : 58
    Par défaut
    a ok merci pour la précision pour Formula, je comprends mieux.

    Pour répondre à ta question:

    1/ cette partie du code marche très bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Bouton1_Cliquer()
    Editeur = InputBox("Veuillez entrer l'editeur à supprimer ?", "Welcome", "Prenom Nom")
    With Worksheets("Feuil2")
        For i = .Range("B" & Rows.Count).End(xlUp).Row To 2 Step -1
            If .Range("B" & i).Value = Editeur Then .Rows(i).Delete shift:=xlUp
       Next i
    End With
    ==> Cela supprime la ligne qui contient la valeur conditionnelle de suppression dans la feuille 2

    2/With Worksheets("Feuil1")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        For i = .Range("A" & Rows.Count).End(xlUp).Row To 2 Step -1
            If .Range("A" & i).Value = Editeur Then .Rows(i & ":" & i + 1).Delete shift:=xlUp
        Next i
    End With
    End Sub
    c'est cette partie la qui ne fonctionne pas. Elle devrait supprimer la ligne qui contient la valeur conditionnelle de suppression plus la ligne du dessous (feuille 1).
    Mais elle ne fait rien puisque le debogeur s'active et j'ai un #REF qui apparaît dans la cellule qui contenait la valeur conditionnelle.

    Merci encore pour ton aide,

  6. #6
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 680
    Par défaut
    Citation Envoyé par Alaindhu Voir le message
    c'est cette partie la qui ne fonctionne pas. Elle devrait supprimer la ligne qui contient la valeur conditionnelle de suppression plus la ligne du dessous (feuille 1).
    Mais elle ne fait rien puisque le debogeur s'active et j'ai un #REF qui apparaît dans la cellule qui contenait la valeur conditionnelle.
    Je viens de tester le code suivant et je n'ai aucune erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub aa()
    Editeur = InputBox("Veuillez entrer l'editeur à supprimer ?", "Welcome", "Prenom Nom")
    With Worksheets("Sheet1")
    For i = .Range("A" & Rows.Count).End(xlUp).Row To 2 Step -1
        If .Range("A" & i).Value = Editeur Then .Rows(i & ":" & i + 1).Delete shift:=xlUp
    Next i
    End With
    End Sub
    As tu essayé le mode pas à pas (touche F8) pour voir quand exactement le #REF apparait?

  7. #7
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 680
    Par défaut
    Bonjour,

    edit: au temps pour moi c'est une variable je ne l'avais pas vu.
    Si tu pouvais mettre ton code entre balise (bouton #), ça m'éviterais de dire n'importe quoi ^^

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

Discussions similaires

  1. Suppression de lignes avec critère
    Par crespo12 dans le forum Lisp
    Réponses: 1
    Dernier message: 28/03/2012, 12h01
  2. [XL-2003] Macro de suppression de ligne avec un mot
    Par harisman87 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/07/2010, 16h50
  3. [WD-2007] Modèle Word - Suppression de ligne avec puce si vide
    Par vincent DD dans le forum Word
    Réponses: 1
    Dernier message: 26/08/2009, 22h14
  4. Suppression des lignes avec condition
    Par tientinou dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/03/2009, 12h35
  5. suppression des lignes avec sed
    Par dngaya dans le forum Linux
    Réponses: 1
    Dernier message: 29/09/2008, 21h23

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