EXCEL : Macros

Résolu/Fermé
alainjjb Messages postés 778 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 8 janvier 2025 - 18 juin 2008 à 10:21
alainjjb Messages postés 778 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 8 janvier 2025 - 18 juin 2008 à 11:19
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
A voir également:

2 réponses

onesdf Messages postés 375 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 17 octobre 2008 120
18 juin 2008 à 10:30
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 "="
0
alainjjb Messages postés 778 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 8 janvier 2025 110
18 juin 2008 à 10:36
Bonjour Onesdf,

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
0
onesdf Messages postés 375 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 17 octobre 2008 120 > alainjjb Messages postés 778 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 8 janvier 2025
18 juin 2008 à 10:37
Tu as des formules qui ne commencent pas par "=" ?
0
alainjjb Messages postés 778 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 8 janvier 2025 110 > onesdf Messages postés 375 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 17 octobre 2008
18 juin 2008 à 10:45
Pour Onesdf,

Non ! toutes les cellules avec formule commence par "=". (je ne savais même pas que ça pouvait exister).

Alain
0
onesdf Messages postés 375 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 17 octobre 2008 120 > alainjjb Messages postés 778 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 8 janvier 2025
18 juin 2008 à 10:49
Peux-tu donner quelques exemples que je puisse voir si je peux adapter le code ?
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 419
18 juin 2008 à 10:33
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
0
onesdf Messages postés 375 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 17 octobre 2008 120
18 juin 2008 à 10:35
Salut Vaucluse,

Le CTRL + Clic de C10 à M500, faut du courage ...
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 419 > onesdf Messages postés 375 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 17 octobre 2008
18 juin 2008 à 10:48
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
0
alainjjb Messages postés 778 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 8 janvier 2025 110 > Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022
18 juin 2008 à 11:06
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
0
alainjjb Messages postés 778 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 8 janvier 2025 110
18 juin 2008 à 10:42
Bonjour Vaucluse,

mon problème c'est que le tableau est de taille variable (le 500 est le nombre de lignes maxi) ce qui veut dire que les cellules avec formule sont mouvantes et n'ont donc pas d'adresse fixe.

Merci quand même

Alain
0
alainjjb Messages postés 778 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 8 janvier 2025 110 > alainjjb Messages postés 778 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 8 janvier 2025
18 juin 2008 à 11:19
TROUVE : le tableau avait une cellule fusionnée dans le titre. Je vais donc "fusionner" vos 2 solutions :

Sélectionner les 2 cellules du titre que je souhaite effacer et mettre en oeuvre la macro pour le tableau "détail".

Merci à tous les 2 du temps passé sur mon problème.

Alain
0