Macro Excel [Résolu]

Messages postés
7
Date d'inscription
jeudi 17 décembre 2009
Statut
Membre
Dernière intervention
8 avril 2012
- - Dernière réponse : flb37
Messages postés
7
Date d'inscription
jeudi 17 décembre 2009
Statut
Membre
Dernière intervention
8 avril 2012
- 8 avril 2012 à 19:34
Bonjour,
Mon PB (sousExcel) est le suivant:
J'ai créé une feuille de calcul Excel Saisie des données.
Dans cette feuille, j'ai un grand nombre de cases à cocher(attachées chacune à une cellule) et des cellules où je rentre des nombres entier; J'ai attribué à ces 2 types de cellules le format $Prot toutes les autres ont le format $nonProt.
Je cherche une macro pour effacer le contenu des cellules $noProt pour recommencer une nouvelle saisie.
MERCI Infiniment pour vos réponses
Afficher la suite 

12 réponses

Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
209
3
Merci
Sais pas ce qui s'est passe ===>> lire :

... directement dans des cellules, le un format personnalisé ainsi "$nonProt"...


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 138 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
209
3
Merci
Attends un peu, là ...
1) Es-tu ou non déjà sous Excel et en utilisation de VBA/Excel quand tu cherches à faire celà ?
2) ces cellules formatées "$NoProt" sont-elles dans une colonne déterminée (et encore assez raisonnable) ou un peu partout sur ta feuille (et là : totalement déraisonnable car lenteurs assurées) ?



____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 138 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
209
3
Merci
Ta macro devrait dans ce cas contenir ces instructions :
Dim laplage As Range, c As Range
  Set laplage = Union(Range("G5:G18"), Range("I5: I18"), Range("K5: K18"), Range("M5: M18"))
  For Each c In laplage
    If c.NumberFormat """$nonProt""" Then c.Value ""
  Next



____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 138 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
209
0
Merci
Bonjour,
C'est quoi, tes formats $Prot et $nonProt ?
Où et comment ont-ils été définis ?

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
209
0
Merci
Bon,
Je t'ai posé cette question car je peine à croire que tu aies pu (et dans quel but plutôt étrange ?) écrire véritablement, directement dans des cellules, le un format personnalisé ainsi : "¤nonProt" !
Mais on ne sait jamais !
Si tel était vraiment le cas ===>> voilà ===>>

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.NumberFormat """$nonProt""" Then Target.Value ""
End Sub

Et aucun utilisateur ne se plaint, chez toi ?

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
7
Date d'inscription
jeudi 17 décembre 2009
Statut
Membre
Dernière intervention
8 avril 2012
0
Merci
J'ai créé ces 2 styles sous Calc (LibreOffice) pour utiliser cette Macro :

[i]REM ***** BASIC *****

Sub Main
const nomFormat = "$NoProt"
Dim oDoc As Object
Dim oFeuille As Object
Dim oDocument As Object
Dim oSheet As Object
Dim oCell As Object

REM ***** Rechercher les cellules auxquelles est appliqué le style $NoProt, et qui sont donc des cellules non protégées. Le résultat de cette recherche est contenu dans la variable oRange. *****

oFeuille = thisComponent.Sheets.getByName("Saisie des Données")
dscCherche = oFeuille.createSearchDescriptor
with dscCherche
.searchRegularExpression = false
.searchStyles = true
.searchString = nomFormat
.ReplaceString = ""
end with
oRange = oFeuille.findAll(dscCherche)

REM ***** Si le résultat de cette recherche est nul : Je le fais savoir au moyen d'une boîte de message , Je quitte la procédure par exit *****

if isNull(oRange) then
msgBox "Aucune cellule de format """ & nomFormat _
& """ trouvée !",, "CHERCHER CELLULES "
exit sub
end if

REM ***** Si le résultat de cette recherche n'est pas nul, j'applique à la zone ou aux zones trouvées une méthode de nettoyage par le vide *****

oRange.clearContents(_
com.sun.star.sheet.CellFlags.VALUE + _
com.sun.star.sheet.CellFlags.DATETIME + _
com.sun.star.sheet.CellFlags.STRING + _
com.sun.star.sheet.CellFlags.ANNOTATION + _
com.sun.star.sheet.CellFlags.FORMULA)
End Sub
/i
Je voudrai rendre compatible cette macro sous Excel mais j'en suis incapable
Commenter la réponse de flb37
Messages postés
7
Date d'inscription
jeudi 17 décembre 2009
Statut
Membre
Dernière intervention
8 avril 2012
0
Merci
Je veux passer sous Excel pour utiliser mon application sur (PC portable) Excel:

Sous libreOffice j'ai sauvegardé mon Classeur avec l'extension .xls : 'Calcul Mah Jong.xls'
Sous excel, j'ouvre sans PB mon classeur mais la macro Bogue




[i]La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi./i
Albert Einstein
Commenter la réponse de flb37
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
209
0
Merci
Bien évidemment, qu'elle bloque !
Tu utilises des instructions de OpenOffice et non de VBA/Excel !
Au passage :
1) tu aurais du le dire dès le premier message
2) tu as ouvert cette discussion dans la section VB.Net !
Pense dorénavant, s'il te plait à bien choisir la section. Tu aurais du l'ouvrir dans la section Langages Dérivés > VBA (qui n'a rien à voir avec VB.Net !

Mais j'attends une réponse à la question posée, à savoir :
2) ces cellules formatées "$NoProt" sont-elles dans une colonne déterminée (et encore assez raisonnable) ou un peu partout sur ta feuille (et là : totalement déraisonnable car lenteurs assurées) ?



____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
7
Date d'inscription
jeudi 17 décembre 2009
Statut
Membre
Dernière intervention
8 avril 2012
0
Merci
ces cellules formatées "$NoProt" sont dans des colonnes déterminées.
G5:G18
I5:I18
K5:K18
M5:M18 Pour Les Cellules
Les cases à cocher :
H19:H39 associée à P19:P39 pour afficher la valeur : VRAI ou FAUX
I19:I39 associée à R19:R39 pour afficher la valeur : VRAI ou FAUX
K19:K39 associée à T19:T39 pour afficher la valeur : VRAI ou FAUX
M19:M39 associée à V19:V39 pour afficher la valeur : VRAI ou FAUX

Je ne sais pas joindre mon fichier Excel

[i]La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi./i
Albert Einstein
Commenter la réponse de flb37
Messages postés
7
Date d'inscription
jeudi 17 décembre 2009
Statut
Membre
Dernière intervention
8 avril 2012
0
Merci
Merci de m'avoir consacré de votre temps; J'ai simplifié mon PB avec cette simple macro:

Sub Macro4()
'
'
Range("G5:G18,I5:I18,K5:K18,M5:M18").Select
Selection.ClearContents
Range("P19:P39,R19:R39,T19:T39,V19:V39").Select
Selection.ClearContents
Range("V19").Select
End Sub

Désolé d'avoir abusé de votre TEMPS


[i]La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi./i
Albert Einstein
Commenter la réponse de flb37
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
209
0
Merci
Bien.
Mais je ne "bénis" pas une telle "solution".
Pourquoi ? ===>>
parce qu'il suffirait que l'utilisateur ajoute ou supprime une/des ligne(s) au dessus de ces cellules pour que cela entraîne des dégâts irréversibles.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
7
Date d'inscription
jeudi 17 décembre 2009
Statut
Membre
Dernière intervention
8 avril 2012
0
Merci
Je suis entièrement d'accord mais j'ai protégé mon document et ma feuille de calcul. Toutes les Cellules sont protégées sauf celles qui sont autorisées à être remplies et effacées par l'utilisateur

Encore un Grand Merci


[i]La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi./i
Albert Einstein
Commenter la réponse de flb37