EXCEL : Macros
Résolu
alainjjb
Messages postés
747
Date d'inscription
Statut
Membre
Dernière intervention
-
alainjjb Messages postés 747 Date d'inscription Statut Membre Dernière intervention -
alainjjb Messages postés 747 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
étant néophyte en macros Excel je me tourne une fois de plus vers vous. Je cherche à effacer les données d'un tableau pour l'initialiser avant la nouvelle saisie. Pour cela j'ai réalisé une petite macro que je vous livre :
Sub INIT_DONNEES()
'
' INIT_DONNEES Macro
' Macro enregistrée le 18/06/2008 par Alain
'
'
Sheets("DATA").Select
Range("C10:M500").Select
Selection.ClearContents
End Sub
Cette macro efface bien les données de mon tableau mais le problème c'est qu'elle efface également les formules.
Quelle est la commande qui me permettrait de n'effacer que les données ?
Merci d'avance
Alain
Configuration: Windows XP
Firefox 2.0.0.14
étant néophyte en macros Excel je me tourne une fois de plus vers vous. Je cherche à effacer les données d'un tableau pour l'initialiser avant la nouvelle saisie. Pour cela j'ai réalisé une petite macro que je vous livre :
Sub INIT_DONNEES()
'
' INIT_DONNEES Macro
' Macro enregistrée le 18/06/2008 par Alain
'
'
Sheets("DATA").Select
Range("C10:M500").Select
Selection.ClearContents
End Sub
Cette macro efface bien les données de mon tableau mais le problème c'est qu'elle efface également les formules.
Quelle est la commande qui me permettrait de n'effacer que les données ?
Merci d'avance
Alain
Configuration: Windows XP
Firefox 2.0.0.14
Configuration: Windows XP Firefox 2.0.0.14
2 réponses
-
Salut,
Ceci devrait fonctionner :Sub INIT_DONNEES() Sheets("DATA").Select Range("C10:M500").Select For Each Cellule In Selection If Left(Cellule.Formula, 1) <> "=" Then ' Cellule.ClearContents End If Next End Sub
Il y a une boucle qui balaye chaque cellule de la sélection (ici C10:M500) et qui efface le contenu SI la formule ne commence pas par le signe "=" -
Bonjour
Le plus simple, avec cette macro, semble de ne sélectionner que les cellules que vous voulez effacer.
pour cela refaite la macro et sélecionner les cellules individuellement en maintenant la touche ctrl enfoncée, ou alors:
écrivez l'adresse des cellules dans la ligne Range (....) .select selon le process suivant en exemple:
C1:C100 sélectionne les celules de C1 à C100
B2,B5,D10 séparées par virgule prend les cellules individuellement
Donc, par exemple:
Range("C1:C100,B2,B5,D10") va prendre le groupe de cellules de C1 à C100 + les cellules B2,B5,D10 isolées.
Espèrant avoir répondu à votre question
Crdlmnt-
- Salut Onesdf
Effectivement,je n'ai pas fait attention aux limites, mais ça restait une solution pour éviter des types de macro que les utilisateurs ne connaissent pas.Ceci dit, il va en falloir encore du courage pour trouver ce qui diffèrencie une cellule à données, une cellule à formule, effacer les résultats sans effacer les formules.....??? Pas clair.
Difficile à comprendre pourquoi quand il n'y a plus de données il faut aussi remettre à 0 des résultats, sans effacer les formules!!
Une solution toutefois: faire une feuille de référence cachée qui comporte la construction complète avec formules telle qu'elle est souhaité à la remise à 0, effacer complètement l'ensemble du champ à réinitialiser et recopier le champ type sur le champ effacé pour remettre les formules.!
Mais à quoi ça sert???Je pensais que ta solution réglait le problème.
Crdlmnt
- Après une petite réflexion (j'aurais peut-être du commencer par ça) je viens de m'apercevoir que la solution de onesdf peut effectivement marcher à condition que j'efface également l'entête qui contient des cellules avec liste déroulante et qui font référence à d'autres cellules du tableau (ce ne sont pas toutes des formules de calcul mais aussi de "référence à").
J'ai donc essayé la macro de onesdf mais elle bloque sur la commande "Cellule.ClearContents". Avez-vous une idée du pourquoi ?
Merci encore
Alain
-
-