EXCEL : Macros
Résolu
alainjjb
Messages postés
821
Statut
Membre
-
alainjjb Messages postés 821 Statut Membre -
alainjjb Messages postés 821 Statut Membre -
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
A voir également:
- EXCEL : Macros
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Si ou excel - Guide
- Déplacer colonne excel - Guide
- Comment trier par ordre alphabétique sur excel - Guide
2 réponses
Salut,
Ceci devrait fonctionner :
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 "="
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
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
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
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
et merci de ta réponse. Ta solution permet d'effacer toutes les cellules sans formule OK Mais je voudrais également effacer les données de ces cellules tout en gardant les formules. Il doit bien y avoir une commande qui fait cela.
Merci quand même
Alain
Non ! toutes les cellules avec formule commence par "=". (je ne savais même pas que ça pouvait exister).
Alain