Le
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Michel__D
Le #26535271
Le 07/01/2020 à 16:17, lesage69 a écrit :
Le mercredi 09 Décembre 2009 à 13:03 par Domi :
Bonjour à tous,
Question double !
1°) je voudrais appliquer un traitement (formatage) à la
totalité de la
plage utilisée sur une feuille
Quel code utiliser pour sélectionner la plage comprise entre A1 et
la
dernière cellule contenant une valeur dans une feuille (dernière
ligne et
dernière colonne occupée !)
2°) je voudrais ensuite appliquer ce même traitement à
l'ensemble des
feuilles du classeur
Là encore quelqu'un pourrait-il m'indiquer le code ?
Merci pour votre aide
Domi

Bonjour à toutes et tous !
C'est un vieux sujet, mais pour ceux qui seraient intéressés par une solution
simple et universelle (parce-que, sans vouloir blesser personne, tout ce qui est
proposé ici est... comment dire... pour le moins alambiqué) :

[...]
VERSION AVEC CHOIX DU CLASSEUR ET DES FEUILLES
Sub EffacerPlagesUtilisees(Optional ByVal Classeur As Workbook, _
Optional ByVal ListeFeuilles As String, _
Optional ByVal Separateur As String = ";")
Dim wbkClasseur As Workbook
Dim strFeuilles As String
Dim varFeuille As Variant
Dim shtFeuille As Worksheet
' Si un classeur est passé en paramètre, s'applique à celui-ci, sinon à
celui dans lequel s'exécute le code
Set wbkClasseur = IIf(Classeur Is Nothing, ThisWorkbook, Classeur)
strFeuilles = Trim(feuilles) ' Pour éliminer les erreurs dues au chaînes
vides
If strFeuille <> "" Then
For Each varFeuille In Split(ListeFeuilles, Separateur) ' Pour chaque
feuille de calcul passée en paramètre
Set shtFeuille = wbkClasseur.Worksheets(varFeuille)
GoSub Traitement
Next
Else
For Each shtFeuille In wbkClasseur.Worksheets ' Pour chaque feuille de
calcul du classeur
GoSub Traitement
Next
End If
Exit Sub
Traitement:
With shtFeuille
.UsedRange.ClearContents ' Effacer le contenu de la plage utilisée
.Range("A1").Select ' Sélectionner la cellule A1
End With
Return
End Sub
Et pour l'appeler :
Sub RazFeuilles()
' Effacer les plages utilisées de toutes les feuilles du classeur où
s'exécute le code :
EffacerPlagesUtilisees
' Effacer les plages utilisées de toutes les feuilles du classeur Toto.xlsx
:
EffacerPlagesUtilisees Workbooks("Toto.xlsx")
' Effacer les plages utilisées d'une liste de feuilles du classeur Toto.xlsx
:
EffacerPlagesUtilisees Workbooks("Toto.xlsx"), "Feuil1;Feuil3"
' Effacer les plages utilisées d'une liste de feuilles du classeur où
s'exécute le code :
EffacerPlagesUtilisees , "Feuil1;Feuil3"
End Sub
Voilà.
Eric CHEVRON - http://www.developpez.com/user/profil/336343/Le-Sage

Bon comme si colle je m'y colle et j'ai donc essayé d'utilié ton code et voici le résultat :
J'ai collé le code ci-dessus dans un module existant :
A l'éxecution de
Sub RazFeuilles()
EffacerPlagesUtilisees , "Sheet1" ' "Sheet1" est une des feuilles du Workbook actif
End Sub
1) A l'entrée dans la sub routine EffacerPlagesUtilisees => Erreur : Variable non définie
Aprés correction
2) sur la ligne ci-dessous => Erreur : Un composant ActiveX ne peut pas créer d'objet
Set wbkClasseur = IIf(Classeur Is Nothing, ThisWorkbook, Classeur)
Aprés correction
3) Avec donc l'appel suivant : EffacerPlagesUtilisees , "Sheet1"
pas bon car cela effaçe toutes les feuilles du classeur actif au lieu de la feuille "Sheet1"
Bref il faudrait tellement remanier ce code pour qu'il soit exploitable que je ne vais faire comme
s'il n'existait pas.
Publicité
Poster une réponse
Anonyme