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 !
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 ^^