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 :

Ajouter une condition à une macro de suppression déjà fonctionnelle [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2015
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Algérie

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2015
    Messages : 86
    Points : 55
    Points
    55
    Par défaut Ajouter une condition à une macro de suppression déjà fonctionnelle
    Bonsoir à tous

    Voila ci-dessous j'ai une macro de suppression, dans l’ensemble elle fonctionne très bien seulement je voudrai lui ajouter une condition qui se résume comme suit :

    Si c'est la dernière ligne qu'on supprime qui est forcément (B12:F12) alors au lieu de .Delete ça sera .Clear

    Voici la macro
    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
    Sub Supprimer_ligne()
    Dim c As Range
    Set c = ActiveCell
    If Not Intersect(c, Range("B12:F1048576")) Is Nothing And Selection.Column <> 1 And Selection.Column <> 7 Then
    If Selection.Rows.Count > 1 Then
    MsgBox "Vous ne pouvez pas supprimer plusieurs lignes à la fois !", vbCritical, "Suppression impossible"
    Exit Sub
    End If
    If Application.CountA(Cells(c.Row, "B").Resize(, 5)) > 0 Then
      If MsgBox("Voulez-vous vraiment supprimer l'opération attribuée à (" & ActiveCell & ") ?", vbYesNo, "Confirmation") = vbYes Then
        c.EntireRow.Delete
      End If
    Else
    MsgBox "Vous ne pouvez pas supprimer une ligne vide !", vbCritical, "Suppression impossible"
    End If
    Else
    MsgBox "Vous ne pouvez pas supprimer cette ligne car votre sélection est hors zone de suppression", vbCritical, "Suppression impossible"
    End If
    End Sub
    Merci à vous tous par avance

    Cordialement

  2. #2
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Points : 658
    Points
    658
    Billets dans le blog
    17
    Par défaut
    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
    Sub Supprimer_ligne()
    Dim c As Range
    Set c = ActiveCell
    If Not Intersect(c, Range("B12:F1048576")) Is Nothing And Selection.Column <> 1 And Selection.Column <> 7 Then
    If Selection.Rows.Count > 1 Then
    MsgBox "Vous ne pouvez pas supprimer plusieurs lignes à la fois !", vbCritical, "Suppression impossible"
    Exit Sub
    End If
    If Application.CountA(Cells(c.Row, "B").Resize(, 5)) > 0 Then
      If MsgBox("Voulez-vous vraiment supprimer l'opération attribuée à (" & ActiveCell & ") ?", vbYesNo, "Confirmation") = vbYes Then
        c.EntireRow.Delete
      End If
    Else
    MsgBox "Vous ne pouvez pas supprimer une ligne vide !", vbCritical, "Suppression impossible"
    End If
    Else
    MsgBox "Vous ne pouvez pas supprimer cette ligne car votre sélection est hors zone de suppression", vbCritical, "Suppression impossible"
    End If
    End Sub
    Peux tu nous en dire plus ? tu l'a mis dans un bouton?
    Si oui la condition n'est pas compliquée. En fait , je voudrais savoir comment ca fonctionne , tu selectionne une cellule et tu clique sur le bouton?
    si c'est le cas c'est un peu inutile non?
    Si c'est automatisées alors pourquoi ne pas faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Dim MyRange as range
    Set AllRange = range("B12:F1048576")
    for each MyRange in AllRange
    if MyRange.offset(1).value = "" then 
    MyRange.offset(1).rows.clearcontents
    end if
    Allez le RC LEns

  3. #3
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2015
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Algérie

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2015
    Messages : 86
    Points : 55
    Points
    55
    Par défaut
    Bonjour tamtam64

    Merci pour la réponse au faite pour les question oui la ligne se supprime au clique sur un bouton et pour la suppression oui soit tu sélectionne une ligne en B5 et F10000 soit tu te positionne sur une des cellules de la dite zone et tu supprime

    Voila pour être plus claire je joins le fichier

    Merci encore
    Fichiers attachés Fichiers attachés

  4. #4
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    tester le numero de la ligne (voir ligne 9) juste avant de supprimer, et agir en conséquence

  5. #5
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2015
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Algérie

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2015
    Messages : 86
    Points : 55
    Points
    55
    Par défaut
    Bonjour

    Merci joe levrai pour le fil mais étant débutant en VBA je trouve pas à imposer le test qui se résume comme suit : Si on supprime une ligne quand il y plusieurs données c'est (c.EntireRow.Delete) mais si c'est la dernière ligne de données qu'on supprime alors c'est (c.EntireRow.Clear)

    Quelqu'un aurai une solution

    Merci par avance

  6. #6
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    IV-N. Lycéen, collégien, étudiant, (bref un apprenti développeur)▲


    Vous êtes les bienvenus ici pour vous former.

    Vous former, cela veut dire lire les cours et tutoriels :
    http://www.developpez.com/cours/

    et éventuellement poser vos questions en français correct si vous avez besoin d'aide, dans un seul forum, et dans le respect des règles du forum.

    Nous ne sommes pas là pour faire vos exercices.
    Entendez par là que nous serons bien évidemment tout à fait d'accord pour vous aider à résoudre votre problème, pour autant que vous fassiez vous-même des efforts.
    Postez votre question, mais proposez également un début de solution, un bout de code, etc. En aucun cas, nous ne ferons le travail à votre place.

    Merci de votre compréhension.

    PS : Merci aux étudiants qui participent à developpez.com en écrivant des tutoriels ou en répondant aux messages des autres sur des sujets qu'ils maîtrisent bien.
    Tu ouvres l'enregistreur de macros

    Tu sélectionnes "A1" sur une feuille avec des lignes occupées

    tu fais CtRL + flèche vers le bas

    Tu termines l'enregistrement

    Ensuite, avec ton aide de VBA, Range et Cell et Cells, tu es capable de trouver, l'adresse, le numéro de ligne et le numéro de colonne de la cellule où ton raccourci-clavier t'a amené.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  7. #7
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    qu'est ce que tu n'as pas compris dans ce que j'explique ? Tout y est

    on essaye autrement :

    - entre .delete et .clear dans ton code, quelle sera l'unique condition à vérifier ?
    tester le numero de la ligne
    - comment faire ce test ?
    (voir [la propriété adéquate à la] ligne 9)
    - où faire ce test ?
    juste avant de supprimer

    - Bonus : maintenant qu'est ce que tu vas faire ?
    agir en conséquence

  8. #8
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2015
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Algérie

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2015
    Messages : 86
    Points : 55
    Points
    55
    Par défaut
    Merci infiniment à vous tous problème résolu

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 12/04/2015, 13h17
  2. Réponses: 2
    Dernier message: 19/05/2014, 15h05
  3. Réponses: 3
    Dernier message: 15/04/2014, 12h32
  4. [Débutant] arreter une boucle à une condition
    Par manon.net dans le forum C#
    Réponses: 7
    Dernier message: 08/10/2011, 21h14
  5. [XL-2003] besoin d'aide pour ajouter 3ans a une date en macro
    Par fpouzou dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/11/2009, 11h45

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