Problématique Macro
Aurel
-
Aurel_1207 Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
Aurel_1207 Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Je suis en train de m'arracher les cheveux avec une maccro et j aurais grandement besoin de votre aide !
Le but de ma macro est assez simple : en fonction du nombre qui figure dans une cellule (cellule fusionnée E47:G47) je veux masquer ou afficher des lignes.
J'aimerais arriver à ça :
=> Si E47:G47 = 0 alors les lignes 48 à 82 sont entierement masquées
Si E47:G47 = 1 alors seules les lignes 56 à 82 sont masquées
Si E47:G47 = 2 alors seules les lignes 65 à 82 sont masquées
Si E47:G47 = 3 alors seules les lignes 74 à 82 sont masquées
Si E47:G47 = 4 toutes les lignes sont affichées.
J ai quand meme essayé et j'ai ecrit ça :
Sub Macro5()
'
' Macro5 Macro
'
'
Range("E47:G47").Select
If ActiveCell.FormulaR1C1 = "0" Then Rows("47:82").Select
Range("B47").Activate
Selection.EntireRow.Hidden = False
Rows("48:82").Select
Range("B48").Activate
Selection.EntireRow.Hidden = True
Range("E47:G47").Select
If ActiveCell.FormulaR1C1 = "1" Then Rows("48:82").Select
Range("B48").Activate
Selection.EntireRow.Hidden = False
Rows("56:82").Select
Range("B56").Activate
Selection.EntireRow.Hidden = True
Range("E47:G47").Select
If ActiveCell.FormulaR1C1 = "2" Then Rows("48:82").Select
Range("B48").Activate
Selection.EntireRow.Hidden = False
Rows("65:82").Select
Range("B65").Activate
Selection.EntireRow.Hidden = True
Range("E47:G47").Select
If ActiveCell.FormulaR1C1 = "3" Then Rows("48:82").Select
Range("B48").Activate
Selection.EntireRow.Hidden = False
Rows("74:82").Select
Range("B74").Activate
Selection.EntireRow.Hidden = True
Range("E47:G47").Select
If ActiveCell.FormulaR1C1 = "4" Then Rows("48:82").Select
Range("B48").Activate
Selection.EntireRow.Hidden = False
End Sub
Le problème est que ma macro fonctionne quand je la crée, mais après j ai un message d'erreur me demandant si je veux debugger...
Et comme, je galère vraiment, j' ai une autre question : quand on travaille sur des fichiers partages, ou doit on enregistrer la macro (Personal Macro Workbook ou dans le classeur en question) - j'ai essayé les deux et des que quelqu un essaie d'executer la macro depuis son poste tout plante...
Je vous remercie grandement par avance pour votre aide!!!
Je suis en train de m'arracher les cheveux avec une maccro et j aurais grandement besoin de votre aide !
Le but de ma macro est assez simple : en fonction du nombre qui figure dans une cellule (cellule fusionnée E47:G47) je veux masquer ou afficher des lignes.
J'aimerais arriver à ça :
=> Si E47:G47 = 0 alors les lignes 48 à 82 sont entierement masquées
Si E47:G47 = 1 alors seules les lignes 56 à 82 sont masquées
Si E47:G47 = 2 alors seules les lignes 65 à 82 sont masquées
Si E47:G47 = 3 alors seules les lignes 74 à 82 sont masquées
Si E47:G47 = 4 toutes les lignes sont affichées.
J ai quand meme essayé et j'ai ecrit ça :
Sub Macro5()
'
' Macro5 Macro
'
'
Range("E47:G47").Select
If ActiveCell.FormulaR1C1 = "0" Then Rows("47:82").Select
Range("B47").Activate
Selection.EntireRow.Hidden = False
Rows("48:82").Select
Range("B48").Activate
Selection.EntireRow.Hidden = True
Range("E47:G47").Select
If ActiveCell.FormulaR1C1 = "1" Then Rows("48:82").Select
Range("B48").Activate
Selection.EntireRow.Hidden = False
Rows("56:82").Select
Range("B56").Activate
Selection.EntireRow.Hidden = True
Range("E47:G47").Select
If ActiveCell.FormulaR1C1 = "2" Then Rows("48:82").Select
Range("B48").Activate
Selection.EntireRow.Hidden = False
Rows("65:82").Select
Range("B65").Activate
Selection.EntireRow.Hidden = True
Range("E47:G47").Select
If ActiveCell.FormulaR1C1 = "3" Then Rows("48:82").Select
Range("B48").Activate
Selection.EntireRow.Hidden = False
Rows("74:82").Select
Range("B74").Activate
Selection.EntireRow.Hidden = True
Range("E47:G47").Select
If ActiveCell.FormulaR1C1 = "4" Then Rows("48:82").Select
Range("B48").Activate
Selection.EntireRow.Hidden = False
End Sub
Le problème est que ma macro fonctionne quand je la crée, mais après j ai un message d'erreur me demandant si je veux debugger...
Et comme, je galère vraiment, j' ai une autre question : quand on travaille sur des fichiers partages, ou doit on enregistrer la macro (Personal Macro Workbook ou dans le classeur en question) - j'ai essayé les deux et des que quelqu un essaie d'executer la macro depuis son poste tout plante...
Je vous remercie grandement par avance pour votre aide!!!
A voir également:
- Problématique Macro
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro maker - Télécharger - Divers Utilitaires
- Macro word - Guide
10 réponses
Bonjour
Un exemple en Vba
https://www.cjoint.com/c/JEwopgcXcsf
Faire Alt+F11 pour voir le code de la feuille
Crdlt
Un exemple en Vba
https://www.cjoint.com/c/JEwopgcXcsf
Faire Alt+F11 pour voir le code de la feuille
Crdlt
Bonjour Aurel, JCB 40
Désolé je viens de réessayer et ca fonctionne (xl2007)
Ci joint classeur refait à compléter avec le choix 2 et 3
https://mon-partage.fr/f/5iZuFvTo/
Au passage, les cellules fusionnées sont à bannir au maximum
Utilise l'option alignement/horizontal/centrer sur plusieurs colonnes
Désolé je viens de réessayer et ca fonctionne (xl2007)
Ci joint classeur refait à compléter avec le choix 2 et 3
https://mon-partage.fr/f/5iZuFvTo/
Au passage, les cellules fusionnées sont à bannir au maximum
Utilise l'option alignement/horizontal/centrer sur plusieurs colonnes
Bonjour
Merci beaucoup pour votre aide !!!!
En fait j ai compris pourquoi ca ne fonctionnait pas chez moi... mon classeur est protégé (oui c'etait une précision assez utile)
Donc à partir de votre code j ai ajouté les lignes suivantes :
ActiveSheet.Unprotect Password:="mdp"
code
ActiveSheet.Protect "mdp", True, True, True
=> Maintenant ma macro s'execute bien (merci encore) par contre ma feuille ne se reprotège pas ce qui me pose un gros souci (il s'agit d'un fichier partagé comme vous l aurez compris)
Merci encore par avance
Merci beaucoup pour votre aide !!!!
En fait j ai compris pourquoi ca ne fonctionnait pas chez moi... mon classeur est protégé (oui c'etait une précision assez utile)
Donc à partir de votre code j ai ajouté les lignes suivantes :
ActiveSheet.Unprotect Password:="mdp"
code
ActiveSheet.Protect "mdp", True, True, True
=> Maintenant ma macro s'execute bien (merci encore) par contre ma feuille ne se reprotège pas ce qui me pose un gros souci (il s'agit d'un fichier partagé comme vous l aurez compris)
Merci encore par avance
La feuille doit être modifiée par une seule personne mais est accessible à une quinzaine de personnes (il s agit d un template que d autres personnes vont utiliser).
Je l ai protégé par mot de passe ; c est ce qui posait problème avec l exécution de la macro.
Du coup j ai rajouté dans le code la fonction "unprotect" ce qui fonctionne, la macro s’exécute.
Le problème par contre c est que la fonction "protect" à la fin ne s’exécute pas et par conséquent toutes les formules du fichier peuvent être modifiées.
Je sais que les mot de passe sur excel ne servent pas à grand chose mais bon c est déjà ça (j ai quand même pensé à mettre un mdp sur le code de la macro pour éviter que tout le monde est accès au mdp du fichier excel...)
Je l ai protégé par mot de passe ; c est ce qui posait problème avec l exécution de la macro.
Du coup j ai rajouté dans le code la fonction "unprotect" ce qui fonctionne, la macro s’exécute.
Le problème par contre c est que la fonction "protect" à la fin ne s’exécute pas et par conséquent toutes les formules du fichier peuvent être modifiées.
Je sais que les mot de passe sur excel ne servent pas à grand chose mais bon c est déjà ça (j ai quand même pensé à mettre un mdp sur le code de la macro pour éviter que tout le monde est accès au mdp du fichier excel...)
Bonjour,
pour plus tard : Si E47 = 0 alors les lignes 48 à 82 sont entierement masquées
Il faut toujours éviter au maximum la fusion de cellules et dans le cas inverse, il est inutile d'inscrire la plage mais seulement la 1ère cellule (ici E47)
pour plus tard : Si E47 = 0 alors les lignes 48 à 82 sont entierement masquées
Il faut toujours éviter au maximum la fusion de cellules et dans le cas inverse, il est inutile d'inscrire la plage mais seulement la 1ère cellule (ici E47)
Yoyo, bonjour,
Qu' il y a t'il ne nouveau par rapport à ce que j'ai déjà proposé ???
j'ai écrit;
1/
"les cellules fusionnées sont à bannir au maximum"
2/
si E47=0 --> lignes 48:82 masquées --> select case case 0,4
Pëut-être relire ce qui a été proposé afin d'éviter de passer pour une mouche du coche
Qu' il y a t'il ne nouveau par rapport à ce que j'ai déjà proposé ???
j'ai écrit;
1/
"les cellules fusionnées sont à bannir au maximum"
2/
si E47=0 --> lignes 48:82 masquées --> select case case 0,4
Pëut-être relire ce qui a été proposé afin d'éviter de passer pour une mouche du coche
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re bonjour
Tu colles ce code dans ThisWorkBook en modifiant le nom de la feuil concernée et le MdP
Mais avant tu fais sauter tous les MdP qu'il y a sur cette feuille .Quand tu voudras faire une modif dans la feuille il te sera demandé le MdP
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
ThisWorkbook.Worksheets("Feuil1").Protect Password:="0000"
End Sub
Ci-dessous un exemple MdP 0000
https://www.cjoint.com/c/JEzqXqEoblf
Cordialement
Tu colles ce code dans ThisWorkBook en modifiant le nom de la feuil concernée et le MdP
Mais avant tu fais sauter tous les MdP qu'il y a sur cette feuille .Quand tu voudras faire une modif dans la feuille il te sera demandé le MdP
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
ThisWorkbook.Worksheets("Feuil1").Protect Password:="0000"
End Sub
Ci-dessous un exemple MdP 0000
https://www.cjoint.com/c/JEzqXqEoblf
Cordialement
Bonjour
Je suis désolée je n avais pas vu votre retour.
Non je n ai toujours pas résolu mon problème.
Le fait est que je mets mon fichier a disposition de plusieurs personnes qui doivent le modifier / l utiliser (il s agit d un formulaire à remplir) mais je dois bloquer les formules que j ai mises pour éviter que quelqu un les modifie / supprime.
Donc il faut que j arrive dnas le code de ma macro à "déprotéger" la feuille pour que la macro s exécute puis que de reprotéger la feuille des que la macro est exécutée
et en mettant :
ActiveSheet.Unprotect Password:="mdp"
code
ActiveSheet.Protect "mdp", True, True, True
Ma feuille ne se reprotege pas.
Merci encore par avance
Meilleures salutations
Je suis désolée je n avais pas vu votre retour.
Non je n ai toujours pas résolu mon problème.
Le fait est que je mets mon fichier a disposition de plusieurs personnes qui doivent le modifier / l utiliser (il s agit d un formulaire à remplir) mais je dois bloquer les formules que j ai mises pour éviter que quelqu un les modifie / supprime.
Donc il faut que j arrive dnas le code de ma macro à "déprotéger" la feuille pour que la macro s exécute puis que de reprotéger la feuille des que la macro est exécutée
et en mettant :
ActiveSheet.Unprotect Password:="mdp"
code
ActiveSheet.Protect "mdp", True, True, True
Ma feuille ne se reprotege pas.
Merci encore par avance
Meilleures salutations
Bonjour,
Un exemple de votre fichier avec explications serait le bienvenu.
Pour transmettre un fichier,
Veillez à ce qu'il n'y ait PAS DE DONNEES CONFIDENTIELLES
il faut passer par un site de pièce jointe tel que cjoint.com
Allez sur ce site : https://www.cjoint.com/
Clic sur parcourir,
Cherche ton fichier,
clic sur ouvrir,
Clic sur "Créer le lien cjoint",
Copier le lien,
Revenir ici le coller dans une réponse...
Cordialement
Un exemple de votre fichier avec explications serait le bienvenu.
Pour transmettre un fichier,
Veillez à ce qu'il n'y ait PAS DE DONNEES CONFIDENTIELLES
il faut passer par un site de pièce jointe tel que cjoint.com
Allez sur ce site : https://www.cjoint.com/
Clic sur parcourir,
Cherche ton fichier,
clic sur ouvrir,
Clic sur "Créer le lien cjoint",
Copier le lien,
Revenir ici le coller dans une réponse...
Cordialement
voici le lien :
https://www.cjoint.com/c/JEBpM7XpHTN
Meilleures salutations
https://www.cjoint.com/c/JEBpM7XpHTN
Meilleures salutations