IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Impossible de modifier un texte d'une cellule


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2019
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mai 2019
    Messages : 64
    Par défaut Impossible de modifier un texte d'une cellule
    Bonjour,
    Je sollicite vôtres aides, j'ai un soucis qui a sont importance si je veux rajouté des mots en double cliquant sur une cellules qui comporte déjà un texte il me l'efface, par contre si je désactive la protection de la feuille je n'ai plus ce problème, je dois certainement avoir un soucis dans mes codes VBA mais je ne sais ou.

    Code de protection de la feuille ==> toto

    Merci d'avance pour vôtresFeuille d'avarie_test.xlsmFeuille d'avarie_test.xlsm aides.

  2. #2
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 127
    Par défaut
    Salut

    Je dirais que ça ne vient pas du code.
    Si tu ajoutes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim aRange As Range
    'Pour voir
    Set aRange = Target
     
    End Sub
    et que tu places un point d'arrêt sur la ligne Set... Tu verras que Target (qui représente la cellule sur laquelle tu viens de doublecliquer) contient bien son texte. ensuite à l'aide de la touche F8, tu avances au pas à pas, aucun autre code n'est exécuté entre cette ligne et le moment ou VBA redonne la main à la feuille (avec la case vide).
    J'en déduit qu'il y a sans doute un truc qui cloche dans les cases cochées au moment du verrouillage de la feuille mais le MdP m'empêche de le voir et je n'ai pas envie de passer du temps à le faire sauter .

    Conseils:
    Pour les propriétés de type boolean, tu peux aussi raisonner comme ça, ça évite de réécrire 50 fois la même ligne dans une structure Select ou IF
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A3:A30,D3:E30,G3:J30,M3:O30,Q3:Q30").Locked = (VUser > 3) or (VUser=0)
    Il vaut mieux préciser le nom des feuilles lors de l'utilisation de Range ou Cells, ça évite les mauvaises surprises...

    De même plutôt que ActiveWorkbook, il vaut mieux utiliser ThisWorkbook, ça évite de travailler sur un Classeur actif qui ne serait pas le bon. Bien sur je sais que la macro est déclenchée lors d'une action sur la feuille et que donc le classeur actif et la feuille active sont forcement les bons... (on me le dit souvent ). Mais le jour ou le traitement du code sera long...

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #3
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2019
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mai 2019
    Messages : 64
    Par défaut
    Merci QWAZERTY pour votre réactivité, même si c'est un peu du chinois pour mes faibles connaissances je vais essayé de déchiffrer vos conseils

    Concernant le code de déverrouillage j'avais placer un code par défaut pour mon fichier test c'est toto
    je l'avais laissé actif pour que puissiez voir mon souci.

    merci encore.

  4. #4
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 127
    Par défaut
    Salut

    Alors pour corriger ça, il faut sélectionner les cellules qui ne contiennent pas de formule, faire un clique droit - Format Cellule - Protection - et décocher "Masquée".

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  5. #5
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2019
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mai 2019
    Messages : 64
    Par défaut
    Citation Envoyé par Qwazerty Voir le message
    Conseils:
    Pour les propriétés de type boolean, tu peux aussi raisonner comme ça, ça évite de réécrire 50 fois la même ligne dans une structure Select ou IF
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A3:A30,D3:E30,G3:J30,M3:O30,Q3:Q30").Locked = (VUser > 3) or (VUser=0)
    Il vaut mieux préciser le nom des feuilles lors de l'utilisation de Range ou Cells, ça évite les mauvaises surprises...

    Qwaz
    Salut Qwaz
    Merci pour t'as dernière réponse cela a résolu mon souci je n'y avait pas pensé, j'étais persuadé que le souci venait plutôt d'un code VBA mal fait.

    Par contre tu que veux tu dire par les ligne de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A3:A30,D3:E30,G3:J30,M3:O30,Q3:Q30").Locked = (VUser > 3) or (VUser=0)
    je peux placer les different user sur la même ligne?
    comment c'est ou ce trouve les parentaises (VUser > 3) or (VUser=0) le 3 correspond à l'identifiant user?

    Exemple comment je peux faire par rapport a ma situation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Case Is = "Tom"
    'donc remplacer par la valeur de Application.UserName
    Range("A3:A30,D3:E30,G3:J30,M3:O30,Q3:Q30").Locked = False
    Range("A3:A30,D3:E30,G3:J30,M3:O30,Q3:Q30").FormulaHidden = True
    'User_Grad?_3
    Case Is = "Fred"
    Range("A3:A30,D3:E30,G3:J30,M3:O30,Q3:Q30").Locked = False
    Range("A3:A30,D3:E30,G3:J30,M3:O30,Q3:Q30").FormulaHidden = True
    'User_Grad?_4
    Case Is = "Luc"
    Range("A3:A30,D3:E30,G3:J30,M3:O30,Q3:Q30").Locked = False
    Range("A3:A30,D3:E30,G3:J30,M3:O30,Q3:Q30").FormulaHidden = True
    Merci

  6. #6
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 127
    Par défaut
    Citation Envoyé par Moun10be Voir le message
    Exemple comment je peux faire par rapport a ma situation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
                                                             Case Is = "Tom"
    'donc remplacer par la valeur de Application.UserName
    Range("A3:A30,D3:E30,G3:J30,M3:O30,Q3:Q30").Locked = False
    Range("A3:A30,D3:E30,G3:J30,M3:O30,Q3:Q30").FormulaHidden = True
    'User_Grad?_3
    Case Is = "Fred"
    Range("A3:A30,D3:E30,G3:J30,M3:O30,Q3:Q30").Locked = False
    Range("A3:A30,D3:E30,G3:J30,M3:O30,Q3:Q30").FormulaHidden = True
    'User_Grad?_4
    Case Is = "Luc"
    Range("A3:A30,D3:E30,G3:J30,M3:O30,Q3:Q30").Locked = False
    Range("A3:A30,D3:E30,G3:J30,M3:O30,Q3:Q30").FormulaHidden = True
    Il faut voir plus globalement mais je raisonnerais différemment. Sachant que les contrôle d'accès sur Excel... c'est pas la panacée et que c'est facilement contournable. Si le but est déviter à un utilisateur de faire une fausse manip, ça peut passer. Si c'est pour l'empêcher de faire un truc néfaste volontaire... oubli excel.

    Si tu fais un tableau avec la liste de tes utilisateurs et à coté une autorisation d'accès (tableau structuré sur un feuille "Options" masquée ou super masquée[voir les propriétés des feuille sous VBA])
    Nom Info TypeAcces
    Tom User 20
    Fred User 20
    Luc User 20
    Jean Super User 10
    Eric Super User 10
    Marc Admin 1
    ...
    Après ça se réfléchi sur les valeurs attribuées. Ici j'ai juste laissé de la place pour pouvoir ajouter des droit entre les droits existants

    Pour les "accès" tu peux faire comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Dim AccesUser as byte
    Dim AutoAccesSecteur1 as boolean
     
    'Ensuite dans le code, tu vas chercher le type d'accès en fonction de l'utilisateur, par exemple pour Luc AccesUser=>20
     
    'On défini les autorisations d'accès en fontion des Secteurs (le secteur ça n'est rien de concret, c'est une zone du fichier)
    'Secteur non accessible au utilisateur de base (20)
    AutoAccesSecteur1 = accesUser<=10 'ici on définie si l'utilisateur à un pouvoir inférieur ou égal à 10
    'Secteur accessible uniquement au admin
    AutoAccesSecteur2 = accesUser=1
    'Secteur accessible...
    'AutoAccesSecteur.....
     
    'Ensuite, on défini les accès des cellules se trouvant dans le secteur1
    Range("A3:A30,D3:E30,G3:J30,M3:O30,Q3:Q30").Locked = not AutoAccesSecteur1 'Si on a acces, c'est non verrouillé
    Range("A3:A30,D3:E30,G3:J30,M3:O30,Q3:Q30").FormulaHidden = AutoAccesSecteur1
     
    'Secteur2 (admin)
    Range("A1:A4").Locked = not AutoAccesSecteur2
    Range("A1:A4"").FormulaHidden = AutoAccesSecteur2
     
    'Tu peux même imaginer afficher ou cacher des onglets
    FeuilOptions.visible = AutoAccesSecteur2
    C'est un exemple mais je pense que tu peux trouver d'autre façon de faire sur le forum

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  7. #7
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2019
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mai 2019
    Messages : 64
    Par défaut
    Salut, sans vouloir abuser de t'as patience et générosité serait il possible que tu me le place sur le fichier que j'avais mis sur le premier message en fonction du tableau user que j'ai placé sur la feuille test comme ça je pourrais voire les modification que vous avez apportez ainsi je pourrais éventuellement comprendre

    cette solution m'intéresse aussi mais comme j'ai dis mes compétences sont très limité
    'Tu peux même imaginer afficher ou cacher des onglets
    FeuilOptions.visible = AutoAccesSecteur2

    Merci.

  8. #8
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 127
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    'Fait parti du code pour protégé en écriture et modification du titre d'une feuille
    Private Sub Worksheet_Calculate()
    On Error GoTo FIN
    Application.EnableEvents = False
      Me.Name = "test"    ' <============== Nom initial de la feuille
    FIN:
    Application.EnableEvents = True
    End Sub
    Il vaudrait mieux regarder du coté de la verrouillage du Classeur pour empêcher ce type de modifications (Menu Révision dans Excel)

    Pour le reste je te laisse regader le fichier. J'ai convertie ton tableau dans la feuille Motrice en tableau structuré

    ++
    Qwaz
    Fichiers attachés Fichiers attachés

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  9. #9
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2019
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mai 2019
    Messages : 64
    Par défaut
    Merci votre aide je vais essayer de comprendre a tête reposer après le boulot


Discussions similaires

  1. [XL-2007] Impossible d'ajouter du texte dans une cellule d'une feuille créée par une macro.
    Par guillaume7684 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/02/2017, 20h55
  2. Modifier la couleur du texte dans une cellule StringGrid
    Par Jotomaticen dans le forum C++Builder
    Réponses: 3
    Dernier message: 22/09/2009, 22h42
  3. Modifier la couleur du texte d'une cellule d'un tableviewer.
    Par tatemilio2 dans le forum SWT/JFace
    Réponses: 4
    Dernier message: 27/06/2008, 08h28
  4. Réponses: 6
    Dernier message: 14/06/2007, 12h13
  5. Réponses: 6
    Dernier message: 30/09/2005, 16h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo