Erreur sur macro

Bonjour, je reviens sur ce sujet qui m'embête.

J'avais posté pour une aide pour faire cette macro:

L'objectif est de réduire un tableau (trame standard: maitre) et d'en créer un second utilisable (trame travail: esclave) sur un autre onglet avec uniquement les lignes de la colonne G = 1. Le tableau maitre étant évolutif, la macro copiait les colonnes pour ensuite supprimer les lignes qui étaient à l'état 0 dans la colonne G.

Il y a plusieurs parties dans ce tableau, partie 1, partie 2, ..., partie n. Cela correspond à des grands chapitres. Si toutes les lignes d'un chapitre sont à 0, le chapitre est à 0 sinon à 1 (formule Excel).

Pour résumer:

- on rempli manuellement la colonne G des lignes pour chaque partie en mettant 0 ou 1 selon si la ligne est à prendre en compte ou pas (cela correspond à des dépenses).

- un calcul automatique calcule l'état de la colonne G du grand chapitre, cela donne un résultat 0 ou 1 (pour aussi l'afficher ou le supprimer car je voudrais éviter que ce soit fait manuellement pour les grands chapitres.

- la macro copie le fichier sur l'onglet esclave et supprime les valeurs égales à 0, ne laissant que les grands chapitres = 1 et les lignes = 1.

Sauf que cela génère une erreur quand toutes les lignes d'un grand chapitre sont = 0. Pourriez vous m'aider à corriger cette erreur svp? Je vous laisse un fichier exemple.

8classeur1.xlsm (28.65 Ko)

merci.

Bonjour Cresus

Je ne peux pas t'aider, mais seulement te dire que c'est à cause de ta formule qui, comme il n'y a plus de lignes à additionner, te balance un #REF!

A voir

Bonne soirée

Personne pour m'aider?

Bonjour,

Patty à mis le doigt sur le problème, mais un autre problème est qu'on ne sait pas ce que tu appelles "un grand chapitre"

EQUIPEMENTS (et tout ce qui pourrait y ressemble) est-il un grand chapitre ?

ou au contraire Partie1 et Partie2 sont ils des grands chapitres ?

Je pense plutôt pour la deuxième hypothèse...

Essaie :

Sub Galopin()
Dim Lig%, i%
   With Sheets("Esclave") 'Tout ce qui commence par un "." se réfère à cette feuille
      Sheets("Maitre").Cells.Copy .Range("A1") 'Copie de l'onglet maitre
      i = .Range("G" & .Rows.Count).End(xlUp).Row - 1
      For Lig = i To 11 Step -1 'Boucle sur les lignes, en partant de la dernière
          If Not WorksheetFunction.IsFormula(Range("G" & Lig)) Then
           If Range("G" & Lig) = 0 Then
              .Rows(Lig).Delete 'Suppression ligne si qte nulle
           End If
          End If
      Next Lig
   End With
End Sub

A+

Effectivement ça ne fait plus d'erreur mais quand tout est à 0 sur une partie (grand chapitre), la ligne de ce grand chapitre reste (avec #REF! en colonne G).

Il faudrait aussi que cette ligne disparaisse ;)

Peut-être ajouter la condition de supprimer les lignes dont la colonne G = #REF!

Dans ce cas c'est encore plus simple :

Sub Galopin()
Dim Lig%, i%
   With Sheets("Esclave") 'Tout ce qui commence par un "." se réfère à cette feuille
      Sheets("Maitre").Cells.Copy .Range("A1") 'Copie de l'onglet maitre
      i = .Range("G" & .Rows.Count).End(xlUp).Row - 1
      For Lig = i To 11 Step -1 'Boucle sur les lignes, en partant de la dernière
         On Error Resume Next
         If Range("G" & Lig) = 0 Then .Rows(Lig).Delete 'Suppression ligne si qte nulle
      Next Lig
   End With
End Sub

A+

Génial, merci.

Peux tu m'expliquer la différence?

On met la poussière sous le tapis...

S'il y a une erreur on supprime quand même !

A+

Je dis ça parce que j'avais une macro qui supprimais des colonnes et changeait la couleur de cellules, ta nouvelle macro m'inhibe cette étape !

Ok c'est bon j'ai trouvé mon erreur.

Merci

A+

Rechercher des sujets similaires à "erreur macro"