Suppression d'images

Bonjour,

En testant cette macro sur mon fichier définitif, des erreurs se produisent. En effet, elle marche parfaitement pour la première partie du tableau, mais pour le reste, elle supprime bien les images mais elle remplace les résultats des formules par du texte qui n’a rien à voir …

Bizarrement, elle fonctionne à merveille sur la feuille Excel que j’avais joint sur le forum. La seule différence est que j’avais remplacé les formules par des valeurs (problème de taille de fichier)

Deux solutions: Soit il est possible de modifier la Macro que Félix m’avait créé, en essayant de voir pourquoi elle remplace le résultat des formules dans les cellules par du texte, et que du coup elle ne supprime pas toutes les lignes dont la cellule (en G) en égale à zéro:

Sub supp_images_et_lignes()

With Sheets("Certificat")

With .Range("A60:K111")

On Error Resume Next

With .SpecialCells(xlCellTypeFormulas, 23)

.Value = .Value

End With

.Replace What:="0", Replacement:="", LookAt:=xlWhole

On Error GoTo 0

End With

For Each sh In .Shapes

If Not Intersect(.Cells(sh.TopLeftCell.Row, 7), .Range("G60:G111").SpecialCells(xlCellTypeBlanks)) Is Nothing Then

sh.Delete

End If

Next sh

.Range("G60:G111").SpecialCells(xlCellTypeBlanks).EntireRow.Delete

End With

End Sub

Soit, si c’est possible, modifier la Macro de base (en XL4) et au lieu de supprimer les lignes lorsque la cellule correspondante est nulle, la masquer (du coup plus de problème avec les images, elles sont masquées avec la ligne)

Bidule142

=SEL.CLASSEUR("Certificat")

=SELECTIONNER("L63C4:L94C4")

=NBVAL(SELECTION())

=CELLULE.ACTIVE()

=POUR("Compteur1";1;$A$4;1)

=SI(OU(CELLULE.ACTIVE()="";CELLULE.ACTIVE()=0;CELLULE.ACTIVE()="0");;ATTEINDRE($A$10))

=EDITION.SUPPRIMER(3)

=ATTEINDRE($A$11)

=SELECTIONNER(DECALER(CELLULE.ACTIVE();1;0))

=SUIVANT()

=SEL.CLASSEUR("Tableau déperditions")

=SELECTIONNER("L9C4:L35C4")

=NBVAL(SELECTION())

=CELLULE.ACTIVE()

=POUR("Compteur2";1;$A$15;1)

=SI(OU(CELLULE.ACTIVE()="";CELLULE.ACTIVE()=0);;ATTEINDRE($A$21))

=EDITION.SUPPRIMER(3)

=ATTEINDRE($A$11)

=SELECTIONNER(DECALER(CELLULE.ACTIVE();1;0))

=SUIVANT()

=RETOUR()

Fichier joint:

Tableau avant le lancement de la Macro: https://www.excel-pratique.com/~files/doc/Tableau_avant_Macro.rar

Tableau après lancement de la Macro (avec les beugs): https://www.excel-pratique.com/~files/doc/Tableau_apres_Macro.rar

Merci pour votre aide,

Erwan

Bonsoir,

plutôt que des fichiers pdf, tu aurais du joindre tes deux exemples au format .xls......

Parce que travailler sur des fichiers Acrobat, pas évident...

Merci de rejoindre tes fichiers Excel

Bonjour

En attendant, tu peux toujours remplacer dans la Macro XL4

=EDITION.SUPPRIMER(3)

par

=HAUTEUR.LIGNE(;;;1)

Mais je ne doute pas que Claude te trouve la solution en VBA

Cordialement

Edit Amadéus: Effacement d'une anerie perso, mes excuses

Bonjour Claude, Amadéus,

J’avais joint un PDF dans un souci de limite de taille de fichier …

J’ai cependant réussi à réduire leurs tailles au minimum :

Le tableau avec seulement des données et aucune formule (la Macro fonctionne à merveille) :

https://www.excel-pratique.com/~files/doc/Macro_sans_formules.xls

Le même tableau avec des formules pour aller chercher des valeurs (La Macro beug) :

https://www.excel-pratique.com/~files/doc/Macro_avec_formules.xls

Sinon j’ai essayé en modifiant la Macro en XL4, comme me l’as proposé Amadéus :

La voici avec les changement (=MASQUER() au lieu de =EDITION.SUPPRIMER(3) )

Bidule142

=SEL.CLASSEUR("Certificat")

=SELECTIONNER("L63C4:L94C4")

=NBVAL(SELECTION())

=CELLULE.ACTIVE()

=POUR("Compteur1";1;$A$4;1)

=SI(OU(CELLULE.ACTIVE()="";CELLULE.ACTIVE()=0;CELLULE.ACTIVE()="0");;ATTEINDRE($A$10))

=MASQUER()

=ATTEINDRE($A$11)

=SELECTIONNER(DECALER(CELLULE.ACTIVE();1;0))

=SUIVANT()

=SEL.CLASSEUR("Tableau déperditions")

=SELECTIONNER("L9C4:L35C4")

=NBVAL(SELECTION())

=CELLULE.ACTIVE()

=POUR("Compteur2";1;$A$15;1)

=SI(OU(CELLULE.ACTIVE()="";CELLULE.ACTIVE()=0);;ATTEINDRE($A$21))

=MASQUER()

=ATTEINDRE($A$11)

=SELECTIONNER(DECALER(CELLULE.ACTIVE();1;0))

=SUIVANT()

=RETOUR()

Et la aussi la Macro s’arrête …

Cordialement,

Erwan

Bonjour

C'est tout de même mieux avec le fichier.

Pour commencer, avec les cellules fusionnées, ce n'est pas la colonne 4 qu'il faut traiter, mais la 2. (D'une manière générale, les cellules fusionnées sont une vraie calamité pour les formules et les macros)

Regarde le fichier joint avec Bouton Macro.

https://www.excel-pratique.com/~files/doc/jyXraMacro_avec_formules.xls

Cordialement

Bonjour

La Macro fonctionne parfaitement, Merci Amadéus !

A la prochaine, et encore merci le Forum pour toutes les solutions que vous trouvez aux problèmes parfois tordus, que l'on vous soumet.

Erwan

bonjour à vous,

après avoir lu ce sujet et cherché sur différents sites, je n'ai pas trouver de solution à mon problème qui est le suivant.

Je suis sur excel 2007, sur un fichier de 120mo avec images que je souhaite réduire en plusieurs fichiers par sections. Le moyen le plus rapide (au lieu de copier/coller les sections et donc de copier/coller les images une par une) est de supprimer toutes les lignes que je ne désire pas conserver et puis "Enregistrer sous".

Le problème est que la suppression de lignes ne supprime pas les images, et je me retrouve avec toutes les images ensuite à supprimer une par une. J'ai bien essayé le F5 atteindre-->cellules-->objets, seulement celà sélectionne toutes les images et moi je désire seulement certaines images.

Donc si quelqu'un connait une petite manip pour mon problème, je suis preneur ! En espérant avoir été clair...


Bon en fait j'ai trouvé moi-même, il suffisait de remettre tous les images les bonnes propriétés et ensuite les images se suppriment avec les lignes ^^

Rechercher des sujets similaires à "suppression images"