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

Excel Discussion :

Propriétés de plage nommées


Sujet :

Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Septembre 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2018
    Messages : 16
    Points : 7
    Points
    7
    Par défaut Propriétés de plage nommées
    Bonjour à tous,

    Je viens vers le forum ar je bute sur un petit problème....
    Je travaille sous Excell 2013.
    J'ai crée dans une feuille excell un formulaire. (J'ai oloriser toutes les cellule en bleu, sauf les cellules qui composent les champs à remplir).
    chaques champs à remplir est composés de plusieurs cellules . J'ai nommé les champs pour avoir plus facile à les traiter dans les procédure VBA.

    Pour parcourir toutes les plage nommée, j'utilise le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For Each oName In ActiveWorkbook.Names
     
        If oName.Name <> "Modele!Print_Area" Then
            wsNew.Range(oName) = ""
        End If
    Next oName
    Le but ici est de nettoyer les champ. DOnc d'avoir des champ vide après l'execution du code.

    Dans la meme idée, je voulais bloquer ou debloquer l'accès aux champ suivant que l'on etait en edition ou en relecture.
    J'ai donc ecrit le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    For Each oName In ActiveWorkbook.Names
     
        If oName.Name <> "Modele!Print_Area" Then
            Range(oName) = ""
            Range(oName).Locked = True
        End If
    Next oName
    La propriété de l'objet oName existe dans l'espion VBa, et je peut meme relire sa valeur (False ou True).
    Cependant l'execution de ce code me donne une erreur:

    ' Run-time error '1004'
    Unable to set the Locked property of the Range class'
    Je peux mettre la propriété 'Locked ' à true ou à False pour des cellules, meme si celles si sont assemblées.

    J'en vies à ma question :
    Y a-t-il moyen de modifier la propriété 'locked' d'une plage en la référencant par son nom ?


    Merci de m'avoir lu jusqu'ici

    Une bonne jornée/soirée à tous

    Michel

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par MichStib Voir le message
    Pour parcourir toutes les plage nommée, j'utilise le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For Each oName In ActiveWorkbook.Names
     
        If oName.Name <> "Modele!Print_Area" Then
            wsNew.Range(oName) = ""
        End If
    Next oName
    A ta place, j'aurai plutôt mis un préfixe aux nom que j'utilise (par exemple "XXX_") et repéré mes noms avec ce préfixe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each oName In ActiveWorkbook.Names
        If Left(oName.Name, 4) = "XXX_" Then
            wsNew.Range(oName).ClearContents
    La propriété de l'objet oName existe dans l'espion VBa, et je peut meme relire sa valeur (False ou True).
    Cependant l'execution de ce code me donne une erreur:
    As-tu ôté la protection de la feuille avant de modifier la propriété d'une de ses cellules ?
    https://msdn.microsoft.com/fr-fr/lib...3(v=office.15)
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Septembre 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2018
    Messages : 16
    Points : 7
    Points
    7
    Par défaut Re Propriété plage de mesure
    Bonjour MenHir,

    Desolé de la réponse tardive.

    Dans la feuille en question, il n'y a que des plages nommées, et une plage d'impression.
    Donc le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
     For Each oName In ActiveWorkbook.Names
     
        If oName.Name <> "Modele!Print_Area" Then
            wsNew.Range(oName) = ""
        End If
    Next oName
    Ne pose pas de problèmes

    La feuille est bien débloquée prtection est mise sur 'false'

    De plus en passant par les cellules .cells(ligne,col) , j'ai accès à la propriété 'locked' de la plage.

    Donc le problèmes reste entier, maintenant on ne peut peut-être pas accéder à cette propriété via Range .....??

    Merci pour ta reponse


    michel

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour Menhir,
    A ta place, j'aurai plutôt mis un préfixe aux nom que j'utilise (par exemple "XXX_") et repéré mes noms avec ce préfixe
    Je ne peux que plussoyer, je travaille de la même manière et notamment pour copier des données d'excel vers des signets de Word
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Septembre 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2018
    Messages : 16
    Points : 7
    Points
    7
    Par défaut Re le plussoyeur ? :-)
    Bonjour Philippe,

    Je suppose que "plussoyer" signifie "être d'accord avec" et "approuver".

    Si j'ai des objet différent sur la feuille, je les préfixe pour les parcourir comme decrit par Menhir.

    Dans mon code je n'ai q'un type d' objet et donc pas de risque de confusion (sauf pour la zone d'impression d'où )


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If oName.Name <> "Modele!Print_Area" Then
    Mais cela ne fais pas avancer mon schimblik

    michel

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Septembre 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2018
    Messages : 16
    Points : 7
    Points
    7
    Par défaut Re
    Pour Philippe,

    Je viens de chercher sur internet et trouver la definition du mot "plussoyer".

    Il existe depuis le XXi° siècle, donc, sorry mais j'en suis resté au XX° siècle

    michel

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour Michel,
    Cette procédure fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub t()
     Dim oName As Name
     For Each oName In ActiveWorkbook.Names
       If oName.Name = "Feuil1!Print_Area" Then
          oName.RefersToRange.Locked = False
       End If
     Next
    End Sub
    Mais comme tu sembles connaître le nom de la feuille et le nom de la plage nommée, tu peux également écrire ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.Worksheets("Feuil1").Range("print_Area").Locked = True
    et j'éviterais d'utiliser Activeworkbook. Il est préférable de définir le classeur explicitement

    Je viens de chercher sur internet et trouver la definition du mot "plussoyer".
    Il existe depuis le XXi° siècle, donc, sorry mais j'en suis resté au XX° siècle
    Tu as parfaitement raison et en général, j'évite d'utiliser les néologismes mais comme sur ce forum ce verbe est de plus en plus employé, je ne me suis pas privé.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Septembre 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2018
    Messages : 16
    Points : 7
    Points
    7
    Par défaut re prpriete plage nomée
    Bonjour Philippe et les autres,

    J'ai modifier mon code pour correspondre a ta version :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    For Each oName In ActiveWorkbook.Names
        If oName.Name <> "Modele!Print_Area" Then
            oName.RefersToRange.Locked = True
            Range(oName) = ""
        End If
    Next oName
    Mais chez moi, j'ai toujours
    "Erreur 1004", "Unable to set the locked property of range class"
    La feuille est bien débloquée.
    J'ai remplace "ActiveWorkbook" par la definition explicit du workbook, mais l'erreur reste la même

    Problème de référence ??
    Parce que j'ai le même problèmes avec Excell2013 et Excell2016 (j'ai plus de version plus ancienne, sauf peut être un symphony qui tourne encore )

    He voulais eviter de traduire l'adresse de la plage en cellule, mais je crois que je vais être obligé

    Michel

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Septembre 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2018
    Messages : 16
    Points : 7
    Points
    7
    Par défaut re prpriete plage nomée
    Bonjour Philippe et les autres,

    J'ai modifier mon code pour correspondre a ta version :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    For Each oName In ActiveWorkbook.Names
        If oName.Name <> "Modele!Print_Area" Then
            oName.RefersToRange.Locked = True
            Range(oName) = ""
        End If
    Next oName
    Mais chez moi, j'ai toujours
    "Erreur 1004", "Unable to set the locked property of range class"
    La feuille est bien débloquée.
    J'ai remplace "ActiveWorkbook" par la definition explicit du workbook, mais l'erreur reste la même

    Problème de référence ??
    Parce que j'ai le même problèmes avec Excell2013 et Excell2016 (j'ai plus de version plus ancienne, sauf peut être un symphony qui tourne encore )

    Je voulais eviter de traduire l'adresse de la plage en cellule, mais je crois que je vais être obligé

    Michel

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Septembre 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2018
    Messages : 16
    Points : 7
    Points
    7
    Par défaut re prpriete plage nomée
    Bonjour Philippe et les autres,

    J'ai modifier mon code pour correspondre a ta version :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    For Each oName In ActiveWorkbook.Names
        If oName.Name <> "Modele!Print_Area" Then
            oName.RefersToRange.Locked = True
            Range(oName) = ""
        End If
    Next oName
    Mais chez moi, j'ai toujours
    "Erreur 1004", "Unable to set the locked property of range class"
    La feuille est bien débloquée.
    J'ai remplace "ActiveWorkbook" par la definition explicit du workbook, mais l'erreur reste la même

    Problème de référence ??
    Parce que j'ai le même problèmes avec Excell2013 et Excell2016 (j'ai plus de version plus ancienne, sauf peut être un symphony qui tourne encore )

    Je voulais eviter de traduire l'adresse de la plage en cellule, mais je crois que je vais être obligé

    Michel

  11. #11
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Histoire d'essayer de diminuer le périmètre de recherche, essaye ça pour voir ce que ça donne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim MyRange As Range
    For Each oName In ActiveWorkbook.Names
        Set MyRange = oName.RefersToRange
        Debug.Print oName.Name
        Debug.Print MyRange.Address
        If oName.Name <> "Modele!Print_Area" Then
            oName.RefersToRange.Locked = True
            Range(oName) = ""
        End If
    Next oName
    Et regarde ce qui s'affiche dans la fenêtre d'exécution.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Septembre 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2018
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    Bonjour Menhir

    Merci de vous intéresser à mon problème.

    J'ai insérer ton code dans mon programme, voici les résultat

    Debug.Print oName.Name = "Alnom" Qui est bien le nom de la plage nommée
    Debug.Print MyRange.Address = $F$26 qui est bien l'adresse de la première cellule de la plage nommée "Alnom"

    l'erreur est toujours présente sur la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oName.RefersToRange.Locked = True

    Michel

  13. #13
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Es-tu certain que toutes les cellules nommées sont des Range ?
    Je te propose d'ajouter dans la liste des impressions cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print oName.RefersTo
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  14. #14
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Ca signifie donc que la plage est bien trouvée et que RefersToRange renvoie bien une référence de cellule valide.

    Je crois qu'on est passé à côté d'une évidence : si tu modifies Locked, c'est sans doute que ta feuille est protégée, non ?
    As-tu ôté cette protection avant de générer des modifications ?

    Que donne ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim MyRange As Range
    For Each oName In ActiveWorkbook.Names
        Set MyRange = oName.RefersToRange
        If oName.Name <> "Modele!Print_Area" Then
            MyRange.WorkSheet.Unprotect
            MyRange.Locked = True
            MyRange.Value = ""
        End If
    Next oName
    S'il y a un mot de passe à ta protection, il faudra le rajouter à Unprotect.
    https://msdn.microsoft.com/fr-fr/lib...3(v=office.15)
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  15. #15
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pour lever tout doute quant à la protection de la feuille, je propose d'ajouter la ligne 2 ci-dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Debug.Print MyRange.Address(external:=True)
    If MyRange.Worksheet.ProtectContents = True Then MsgBox MyRange.Worksheet.Name & " Protégée"
    ou cette ligne qui signifie qu'en cas d'arrêt la feuille parente de MyRange est protégée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Assert MyRange.Worksheet.ProtectContents = False
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 242
    Points : 484
    Points
    484
    Par défaut
    Bonjour,

    A tout hasard, si ta plage nommée fait référence à des cellules fusionnées, essaie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oName.RefersToRange.MergeArea.Locked = True

  17. #17
    Futur Membre du Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Septembre 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2018
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    Pour augmenter le taux d'information, le code suivant ne donne pas d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    For Each oName In wbMoi.Names
        If oName.Name <> "Modele!Print_Area" Then
            Range(oName) = ""
           Range(oName).Select
           Selection.Locked = True
        End If
    Next oName
    non, la feuille n'est pas protégée. Je le verifie chaque fois

  18. #18
    Futur Membre du Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Septembre 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2018
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    Ouuups j'ai pousser trop vite sur "Envoyer"

    La feuille est la seule dans le classeur.
    Elle est normalement protégée, seul les plage nommée ne sont pas protégées. Ainsi on peut ecrire dedans.

    Pour faire passer cette feuile en mode consultation des donnée déjà existantes, je voulais faire passer les plage nommée en mode
    protégé pour eviter les modification.

    Et la mes problèmes ont commencés.

    Je crois que je vais rester sur la séquence décrite dans mon post précedent,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Range(oName) = ""
    Range(oName).Select
    en bloquant le screenupdating, cela reste invisible, mais je trouve ce code un peu "primaire". m

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 242
    Points : 484
    Points
    484
    Par défaut
    Citation Envoyé par MichStib Voir le message
    ...chaques champs à remplir est composés de plusieurs cellules...
    Ces cellules composant un champ sont-elles fusionnées ? Si oui, voir mon post précédent #16.

    Bonjour,

    A tout hasard, si ta plage nommée fait référence à des cellules fusionnées, essaie
    oName.RefersToRange.MergeArea.Locked = True

  20. #20
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par MichStib Voir le message
    Elle est normalement protégée, seul les plage nommée ne sont pas protégées. Ainsi on peut ecrire dedans.
    As-tu vraiment vérifié ça ?
    Parce qu'après avoir fait tourné plusieurs fois une macro qui met leur Locked à True, j'espère que tu as pensé à chaque fois à ôter la protection.

    Une chose est sûre : les noms sont détectés et le RefersToRange renvoie bien la référence valide de la plage.
    Donc le problème vient de la manipulation des cellules concernées.

    A mon avis, le fait que ce soit des plages nommées n'a rien à voir avec le problème.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Mise en forme bordure par Macro sur plage nommée
    Par tempo-lyon dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 01/10/2007, 10h52
  2. Mettre une plage nommée dans un ComboBox
    Par Swiper dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 18/07/2007, 08h51
  3. Adresse de Cellule d'une plage nommée
    Par edelweisseric dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 22/06/2007, 09h13
  4. Export Excel "Impossible d'agrandir la plage nommée"
    Par jean-paul lepetit dans le forum Access
    Réponses: 15
    Dernier message: 22/05/2007, 09h55
  5. [Problème] Accès aux propriétés de listes nommées avec []
    Par VincentL dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/10/2005, 16h13

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