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 !

michel2000

XLDnaute Occasionnel
Bonjour Forum;

Vous trouverez ci-dessous une partie d'une macro qui a pour but de "vider" les cellules tout en n'affectant pas les formules. Je dois vider plus de 24 feuilles. En utilisant l'enregistreur de macro j'ai obtenu ce qui suit (ne représente que 2 feuilles seulement).

Est-ce qu'il y a une autre façon d'écrire un code équivalent car je trouve que ce qui suit comporte une redondance et qu'il y a certainement une autre façon de coder le tout.

Merci de votre attention
Michel

Sheets("v_Novembre").Range("A3:g3").ClearContents
Sheets("v_Novembre").Range("N5:Q5").ClearContents
Sheets("v_Novembre").Range("A7:g100").ClearContents
Sheets("v_Novembre").Range("N5:Q5").ClearContents
Sheets("v_Novembre").Range("Q7:Q100").ClearContents
Sheets("v_Novembre").Range("k7:k100").ClearContents
Sheets("v_Novembre").Range("l7:l100").ClearContents
Sheets("v_Novembre").Range("m7:m100").ClearContents

Sheets("v_Decembre").Range("A3:g3").ClearContents
Sheets("v_Decembre").Range("N5:Q5").ClearContents
Sheets("v_Decembre").Range("A7:g100").ClearContents
Sheets("v_Decembre").Range("N5:Q5").ClearContents
Sheets("v_Decembre").Range("Q7:Q100").ClearContents
Sheets("v_Decembre").Range("k7:k100").ClearContents
Sheets("v_Decembre").Range("l7:l100").ClearContents
Sheets("v_Decembre").Range("m7:m100").ClearContents
 
Re : Vider cellules

Bonjour Michel2000 🙂,
Si j'ai compris, tu veux vider les cellules autres que les formules.
Tu peux tester
Code:
Cells.SpecialCells(xlCellTypeConstants, xlNumbers).ClearContents
Sinon, tes plages étant discontinues, il faudrait voir le fichier pour essayer de boucler sur les cellules.
Bonne soirée 😎
 
Re : Vider cellules

Si la solution proposée par JNP ne convenait pas, pour une raison ou une autre.

Tu pourrais envisager ce genre d'écriture pour regrouper les plages
Code:
Range("A3:g3, N5:Q5, A7:g100, Q7:Q100, k7:M100").ClearContents
Mais c'est nettement moins élégant que la solution de JNP.

A plus
 
Re : Vider cellules

Bonsoir à tous
S'il s'agit de vider les mêmes plages dans un ensemble de feuilles déterminé, quelque chose comme ça devrait faire l'affaire.
Code:
Sub toto()
Dim feuille As Sheets, s
    Set feuille = Sheets(Array("Feuil1", "Feuil3")) [COLOR="Green"]'Liste des feuilles[/COLOR]
    For Each s In feuille
      s.Range("A3:G3, N5:Q5, A7:G100, Q7:Q100, K7:M100").ClearContents
    Next s
    Set feuille = Nothing
End Sub
ROGER2327

___________________
Correction le 17/04/09 suite à
(...) la macro Toto (...) fonctionne pas. La macro efface bien les données de la feuil1 mais pas celles de feuil3. (...)
Michel
Maintenant la procédure Toto fonctionne.
 
Dernière édition:
Re : Vider cellules

Bonsoir JNP;

Le programme principal comporte 12 feuilles_ventes (12 mois / année), 12 feuilles_dépenses (12 mois / année), graphiques,
historique des ventes et dépenses, divers rapports comptables et j'en passe.

Le programme original étant volumineux, j'ai reproduit un Mini Programme ne comportant que deux feuilles-ventes, 2 feuilles-dépenses, liste clients fictive.

Comme mentionné dans mon premier message, le but recherché est d'effacer le contenu (et non pas les formules) des feuilles vente et feuilles de dépenses. En fait je cherche une sorte de remise à zéro. En effet, lors d'une nouvelle année, au moyen d'une macro demandant à l'usager d'inscrire la Nouvelle Année. Alors partout dans le programme, par exemple l'année 2009 sera remplacée par la nouvelle inscription qui est 2010. Jusque là, ok.

Mais comment vider les cellules des feuilles de vente et de dépenses (date, nom client, les différents montants) ? Ainsi la même structure serait toujours ré-utilisée et voilà le programme est prêt à recevoir les nouvelles données pour l'année 2010

Lien pour le fichier:
Cijoint.fr - Service gratuit de dépôt de fichiers

Merci beaucoup pour votre aide et bonne fin de soirée
Michel
 
Re : Vider cellules

Bonsoir soenda et ROGER2327;

En venant poster ma réponse à JNP, je viens à l'instant même de prendre connaissance de vos messages et je vous remercie beaucoup.

Soenda, je vais conserver ton message qui me sera sans doute utile dans certains cas.

ROGER2327, ta solution me semble très intéressante et à première vue, semble répondre à mes besoins. Je vais le tester et je reviens t'en donner des nouvelles.

Encore une fois merci à vous tous.
Michel
 
Re : Vider cellules non resolu

Bonjour Forum et ROGER2327;

Je viens de tester la macro Toto qui hélas ne fonctionne pas. La macro efface bien les données de la feuil1 mais pas celles de feuil3.

En connais-tu la cause.
Ci-inclus fichier
Merci et bonne journée
Michel
 

Pièces jointes

Re : Vider cellules

Bonsoir tous


A tester (car pas d'Excel sur ce poste)

Code:
sub test()
Dim s as Worksheet
For each s in Worksheets
if s.Name Like "v_*" then
s.Range("A3:g3, N5:Q5, A7:g100, Q7:Q100, k7:M100").ClearContents
end if
next
end sub
 
Dernière édition:
Re : Vider cellules

Bonjour vbacrumble;

Ca y est. Tout fonctionne très bien. J'ai apporté quelques modifications pour vérifier et c'est super.


Avec la série de feuilles dont l'onglet commence par "V" Super.

Je dois aussi faire la même opération pour les onglets débutant par la lettre "D" (ex d_janvier, d_fevrier etc..)

Donc j'ai répété les codes en modifiant le "V" pour "D". Est-ce correct ou s'il y a une façon plus "performante" de formuler.
Ci-inclus ci-dessous la macro modifiée.
Merci beaucoup, je suis vraiment content.
Bonne journée
Michel

Sub test()
'Pour les feuilles débutant par la lettre V
Dim s As Worksheet
For Each s In Worksheets
If s.Name Like "v_*" Then
s.Range("A1:h7, N5:Q5, A7:g100, Q7:Q100, k7:M100").ClearContents
End If
Next

'Pour les feuilles débutant par la lettre D
Dim m As Worksheet
For Each m In Worksheets
If m.Name Like "d_*" Then
m.Range("A1:h7, N5:Q5, A7:g100, Q7:Q100, k7:M100").ClearContents
End If
Next
End Sub
 
Re : Vider cellules

Re


Essaye ainsi

Code:
Sub test()
'Pour les feuilles débutant par la lettre V ou D
Dim s As Worksheet
For Each s In Worksheets
If s.Name Like "v_*" Or s.Name Like "d_*" Then
s.Range("A1:h7, N5:Q5, A7:g100, Q7:Q100, k7:M100").ClearContents
End If
Next
End sub

Tu peux aussi tester en reprenant la proposition de JNP

Code:
sub test2()
Dim s as Worksheet
For each s in Worksheets
if s.Name Like "v_*" Or s.Name Like "d_*" Then
s.UsedRange.SpecialCells(xlCellTypeConstants, xlNumbers).ClearContents
end if
next
end sub
 
Dernière édition:
Re : Vider cellules

Re...
Je viens de tester la macro Toto qui hélas ne fonctionne pas. La macro efface bien les données de la feuil1 mais pas celles de feuil3.
Exact. (Ou presque : "La macro efface bien les données de la feuille active.")
Le code correct est
Code:
Sub toto()
Dim feuille As Sheets, s
   Set feuille = Sheets(Array("Feuil1", "Feuil3")) 'Liste des feuilles
   For Each s In feuille
      [COLOR="Red"][B]s.[/B][/COLOR]Range("A1:F50, N5:Q5, A7:G100, Q7:Q100, K7:M100").ClearContents
   Next s
   Set feuille = Nothing
End Sub
Ce qu'a déjà corrigé l'excellent vbacrumble. Mille excuses (au moins).​
Bonne nuit à vous !
ROGER2327
 
Re : Vider cellules

Bonsoir vbacrumble, ROGER2327

La macro efface bien les données mais efface aussi les formules (A1), ce qui ne doit pas se produire (voir le premier message) car il est impératif de garder les formules puisque le but final est de supprimer les données et réutiliser ces feuilles et leurs calculs pour une nouvelle année.

Mais comment ?
Voir fichier ci-inclus

Merci beaucoup
Michel
 

Pièces jointes

Re : Vider cellules

Bonjour


Je viens de tester sur Excel 2000 , cela fonctionne
Code:
Sub test2ok()
Dim s As Worksheet
For Each s In Worksheets
If s.Name Like "v_*" Or s.Name Like "d_*" Then
's.UsedRange.SpecialCells(xlCellTypeConstants, 23).ClearContents ' excel 2000
s.UsedRange.SpecialCells(xlCellTypeConstants, xlNumbers).ClearContents ' excel 2007
End If
Next
End Sub

PS: michel2000: j'avais édité mon précédent message avec cette syntaxe, tu ne l'avais pas vu ?
 
Re : Vider cellules

Bonjour vbacrumble;


J'avais testé ce dernier (sub test2) et comme il me donnait toujours un message d'erreur je me suis attardé au premier.

Mais suite à ton dernier message j'ai revérifié et j'ai constaté que lors de mon copier-coller j'avais mal déterminé la zone de copie d'où le message d'erreur. Je me suis repris et oui tout fonctionne très bien.

Je m'excuse pour le contre-temps et te remercie beaucoup. Le dossier est considéré "Résolu"

Bonne journée
Michel
 
Re : Vider cellules

Bonjour Forum et vbacrumble

Hélas le sujet n'est pas résolu. La macro n'efface que partiellement les données et je ne sais vraiment pas pourquoi.

Auriez-vous une réponse?
Ci-inclus fichier avec quelques feuilles du programme auquel j'applique la macro Sub test2ok()

Cijoint.fr - Service gratuit de dépôt de fichiers

Merci beaucoup
Michel
 
- 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
Retour