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
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
A voir également:
- EXCEL : Macros
- Liste déroulante excel - Guide
- Si et excel - Guide
- Word et excel gratuit - Guide
- Aller à la ligne excel - Guide
- Déplacer une colonne excel - Guide
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
18 juin 2008 à 10:30
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 "="
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
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
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
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
18 juin 2008 à 10:35
Salut Vaucluse,
Le CTRL + Clic de C10 à M500, faut du courage ...
Le CTRL + Clic de C10 à M500, faut du courage ...
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
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
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
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
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
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
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
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
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
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
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
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
18 juin 2008 à 10:36
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
18 juin 2008 à 10:37
18 juin 2008 à 10:45
Non ! toutes les cellules avec formule commence par "=". (je ne savais même pas que ça pouvait exister).
Alain
18 juin 2008 à 10:49