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 :

Private à modifier éventuellement [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Moi, je ne fais que passer, excusez le dérangement
    Inscrit en
    Mars 2013
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Moi, je ne fais que passer, excusez le dérangement

    Informations forums :
    Inscription : Mars 2013
    Messages : 660
    Par défaut Private à modifier éventuellement
    Bonjour à tous,

    J'ai fait ce petit Private ci-dessous qui me permet de faire effacer toute une ligne en faisant SUPPR sur le montant d'une ligne (Crédit ou débit)
    Cette ligne devient blanche et peut se trouver au milieu du tableau si je n'ai pas constaté mon erreur aussitôt.
    Evidemment on peut Sélectionner par le N° de ligne puis Edition Supprimer.
    Est-il possible de faire juxtaposer cette ligne blanche à la précédente et à la suivante à l'enregistrement du programme?
    Je ne sais si ça va être compréhensible par tous sans le programme!
    Merci pour vos éventuels retours et bonne fin de WE à tous.
    Bien cordialement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Worksheet_Change(ByVal Target As Range)
      If Target.Count > 1 Then Exit Sub
      If (Target.Column = 4 Or Target.Column = 5) And Target.Row > 2 Then
        If Target = "" Then
          Application.EnableEvents = False
          Range("A" & Target.Row & ":G" & Target.Row).ClearContents
          Application.EnableEvents = True
        End If
      End If
    End Sub

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    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 : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je ne comprends pas ce que tu veux.
    D'après la lecture de ta procédure, la plage des colonnes A à G de la ligne où l'on tape sur Suppr s'efface à condition que la ligne soit supérieure à la ligne 2 et que l'action se fasse sur les colonnes D ou E.
    Si tu veux effacer également la ligne qui précède ou qui suit il faut simplement modifier la référence aux cellules.
    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

  3. #3
    Membre très actif
    Homme Profil pro
    Moi, je ne fais que passer, excusez le dérangement
    Inscrit en
    Mars 2013
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Moi, je ne fais que passer, excusez le dérangement

    Informations forums :
    Inscription : Mars 2013
    Messages : 660
    Par défaut
    Bonjour Philippe,
    Je me suis certainement mal expliqué. Lorsque je tape SUPPR sur le montant, la ligne s'efface en totalité (de A à G), donc la ligne est vide. Ce que je veux maintenant c'est faire supprimer la première ligne vide trouvée.
    Merci de m'avoir répondu et bonne journée à toi.
    Cordialement

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    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 : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Ce que je veux maintenant c'est faire supprimer la première ligne vide trouvée
    Toujours pas certain d'avoir compris.

    La dernière ligne remplie trouvée dans une plage en partant par exemple de A2, c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A2").End(xlDown)
    Donc pour obtenir la première vide, il faut ajouter Offset(1) et avec en plus EntireRow.Delete, tu supprimes la ligne entière
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A2").End(xlDown).Offset(1).EntireRow.Delete
    Si tu veux supprimer toutes les lignes dont la cellule de la colonne A est vide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A2:A100").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    Maintenant, si tu veux supprimer la ligne entière (celle où tu as appuyé sur Suppr) plutôt que les cellules de A à G, alors il faut utiliser cette ligne d'instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Target.EntireRow.Delete
    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

  5. #5
    Membre très actif
    Homme Profil pro
    Moi, je ne fais que passer, excusez le dérangement
    Inscrit en
    Mars 2013
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Moi, je ne fais que passer, excusez le dérangement

    Informations forums :
    Inscription : Mars 2013
    Messages : 660
    Par défaut
    Un grand MERCI. J'ai appliqué la dernière solution, c'est celle que je voulais.
    Le l'ai mise dans le code ci-dessous (je ne sais pas si c'est le bon endroit mais ça fonctionne!!!)
    Bonne journée à toi et bonne semaine.
    Bien cordialement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Worksheet_Change(ByVal Target As Range)
      If Target.Count > 1 Then Exit Sub
      If (Target.Column = 4 Or Target.Column = 5) And Target.Row > 2 Then
        If Target = "" Then
              Application.EnableEvents = False
          Range("A" & Target.Row & ":G" & Target.Row).ClearContents
          Application.EnableEvents = True
          Target.EntireRow.Delete
        End If
      End If
    End Sub

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    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 : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    La ligne 6 de ta procédure est en trop alors et il vaut mieux supprimer la ligne avant de remettre EnableEvents à True
    Soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Worksheet_Change(ByVal Target As Range)
      If Target.Count > 1 Then Exit Sub
      If (Target.Column = 4 Or Target.Column = 5) And Target.Row > 2 Then
        If Target = "" Then
          Application.EnableEvents = False
          Target.EntireRow.Delete
          Application.EnableEvents = True
        End If
      End If
    End Sub
    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

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

Discussions similaires

  1. properties dans classdef non modifiables avec setAccess=private
    Par oodbae_adriano dans le forum MATLAB
    Réponses: 3
    Dernier message: 01/11/2014, 15h18
  2. Réponses: 8
    Dernier message: 27/03/2014, 11h46
  3. Réponses: 3
    Dernier message: 07/10/2008, 11h13
  4. [VB6] [MDI] Modifier form en MDIform
    Par fikou dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 12/09/2002, 13h48
  5. Réponses: 5
    Dernier message: 06/08/2002, 20h08

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