Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Suppression de ligne

  • Initiateur de la discussion Initiateur de la discussion RONIBO
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

RONIBO

XLDnaute Impliqué
Bonsoir le forum,

J'ai crée une facture sur excel, il y a quelque code vba dessus

Dont l'une des code concerne le réglage de la hauteur des ligne



If Len(Cells(Target.Row, 3)) > 60 Then
Cells(Target.Row, 3).RowHeight = 30
Else
Cells(Target.Row, 3).RowHeight = 15
End If


Parfois dans mes factures la hauteur des lignes peut passer à 30 (doubler) car la désignation peut être long (plus de 60 caractères)

En faisant ceci, sa m'oblige de supprimer une ligne vide, car le tout de facture ne rentre pas sur une page.

C'est pour ça que j'aimerais pouvoir insérer un code qui supprimera automatiquement la ligne suivante (vide) lorsque la hauteur de la ligne précédente passe à 30.

Je vous mets mon fichier concerné

Merci à vous pour votre temps et votre patience

a bientôt

Ce lien n'existe plus
 
Re : Suppression de ligne

Bonjour Ronibo, bonjour le forum,

Peut-être comme ça :
Code:
   If Len(Cells(Target.Row, 3)) > 60 Then
      Cells(Target.Row, 3).RowHeight = 30
      Rows(Target.Row + 1).Delete
   Else
      Cells(Target.Row, 3).RowHeight = 15
   End If
 
Re : Suppression de ligne

Bonjour,

Le problème en supprimant des lignes c'est que ta zone de selection (lignes 20 à 38) va être modifiée et tu vas finir par appliquer ta macro sur des lignes qui ne le doivent pas...
Une autre solution serait peut-etre de "masquer" les lignes.
Autre chose, il faudrait envisager la possibilité de démasquer ces lignes en cas de besoin.

Je te propose de remplacer ça:
VB:
If Not Intersect(Target, Range("C20:E38")) Is Nothing And Target.Count = 3 Then
   Range(Cells(Target.Row, 1), Cells(Target.Row, 8)).Interior.Color = RGB(255, 192, 0)

   If Len(Cells(Target.Row, 3)) > 60 Then
      Cells(Target.Row, 3).RowHeight = 30
   Else
      Cells(Target.Row, 3).RowHeight = 15
   End If

End If

Par ça:
VB:
If Not Intersect(Target, Range("C20:E38")) Is Nothing And Target.Count = 3 Then
   Range(Cells(Target.Row, 1), Cells(Target.Row, 8)).Interior.Color = RGB(255, 192, 0)

   If Len(Cells(Target.Row, 3)) > 60 Then
      If Cells(Target.Row, 3).RowHeight = 15 Then testhauteur = 1
      Cells(Target.Row, 3).RowHeight = 30
   Else
      If Cells(Target.Row, 3).RowHeight = 30 Then testhauteur = -1
      Cells(Target.Row, 3).RowHeight = 15
   End If

If testhauteur = 1 Then
For ligne = 38 To 20 Step -1
If Cells(ligne, 1).RowHeight > 0 And Cells(ligne, 1).Value = "" And compte = 0 Then
    Cells(ligne, 1).RowHeight = 0
    compte = 1
    End If
Next ligne
If ligne = 0 Then MsgBox "La facture dépasse 1 page"
End If

If testhauteur = -1 Then
For ligne = 38 To 20 Step -1
If Cells(ligne, 1).RowHeight = 0 And compte = 0 Then
    Cells(ligne, 1).RowHeight = 15
    compte = 1
    End If
Next ligne
End If

End If

en déclarant bien sûr les nouvelles variables (compte, ligne et testhauteur)

Il y a surement moyen d'améliorer...

mikachu
 
Re : Suppression de ligne

Bonjour le fil, le forum,

Merci à vous deux pour vos solutions 😉

Je pense que je vais me pencher sur la macro de Mikachu

Ta solution est plutôt pas mal, c'est une bonne idée de masquer les lignes.

Par contre lorsque une ligne s'efface le trait du bas disparais aussi, tu as une solution à ça?
a+
 
Re : Suppression de ligne

Bonsoir,

J'ai résolu mon problème 🙂

J'ai fusionné la colonne réserve avc la colonne désignation 🙂

Une question j'ai vu que tu as mis un msgbox, a quel moment il s'affiche, je l'ai jamais eu même avc la feuille pleine s)
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
910
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…