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. #21
    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 : 64
    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 au forum,

    Voila comme rien de probant n'est ressortit de cette discussion , j'ai resolu le probleme comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    For Each oName In wbMoi.Names
        If oName.Name <> "Modele!Print_Area" Then
            If bloque Then 'On demande le blocage de la plage
                Range(oName).Select
                Selection.Locked = True
            Else  'On libère la plage
                Range(oName).Select
                Selection.Locked = False
            End If
        End If
    Next oName

    Avec le EnableEvents et le ScreenUpadating à 'false' , il n'y a pas de saut d'affichage
    Donc l'un dans l'autre cette solution devra me suffire.
    Je met donc un résolu ic

    Merci à tous

    Michel

  2. #22
    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 729
    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 729
    Points : 28 555
    Points
    28 555
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Voila comme rien de probant n'est ressortit de cette discussion
    Je pense que toutes les réponses que tu as reçues étaient on ne peut plus fonctionnelles
    Par contre
    Avec le EnableEvents
    Laisse sous entendre que tu avais une procédure événementielle qui réagissait sans doute à l'activation de la feuille en question. Première nouvelle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    et le ScreenUpadating à 'false'
    Ton problème de "saut d'affichage" n'en serait pas un si tu n'utilisais pas la méthode Select et la procédure événementielle ne réagirait pas non plus (sauf si tu utilises également Worksheet_Change

    Conclusion si nous recevions tous les éléments au moment de l'ouverture de la discussion, la réponse se limiterait à quatre posts maximum pour ce genre de question (La question, une ou deux réponses et éventuellement le Superi cela fonctionne)
    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

  3. #23
    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 : 64
    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
    Bonjour Phillipe,

    Avec Excell, je desactive toujours les Event et les ScreenUpdating.
    Cela me permet de faire un peu ce que je veux dans la(les) feuille(s) sans que celle ci clignote (passage d'une feuille à l'autre lors de l'ecriture dans une feuille non active)
    Dans la même optique, dans mes procédure VBA, je desactive la protection de la feuille avant d'intervenir dessus, puis je la réactive a la fin de la procédure (avec le screenUpdating et le EventEnable)

    Dans le cas qui m'occupe, il n'y a qu'une feuille, La plus part des cellule sont bloquées et les champ nommés ne le sont pas.

    J'ai testé toutes les réponses reçues , mais l'erreur reste toujours la même (erreur 1004).

    Je ne pense pas (mais je peux me tromper) que un changement de valeur de propriété dans une cellule (hormis évidement le contenu) donne une entrée vers _Change.

    Si je poste un problème sur Devellopez .com c'est que je n'ai trouvé (pas su exprimer clairement) une solution .
    La solution que j'ai apportée ici ne me plais que à moitié, bon si il n'y a pas d'autre solution....

    J'avais essayé avec ou sans l'activation des Event et des screenUpdating, mais cela ne change rien à la generation de l'erreur.

    Si j'ai oublié de transmettre une information, j'en suis désolé.

    Je reste convaincu que les forum sont une excellente source de données d'idées et de solutions.
    Mais je sais aussi qu'a l'impossible nul n'est tenu.

    je tacherais d'être plus précis et complet lors de mon prochain poste.

    Une bonne journée à tous


    Michel

  4. #24
    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 729
    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 729
    Points : 28 555
    Points
    28 555
    Billets dans le blog
    53
    Par défaut
    Bonjour Michel
    Désactiver les procédures événementielles n'a de sens que si tu les utilises et qu'une action que tu réalises en VBA provoque le déclenchement de cette procédure dans le cas contraire cela ne sert à rien.

    L'effet de "saut d'affichage" tel que tu le décris est surtout dû au fait que tu utilises la méthode Select qui est parfaitement inutile comme je l'ai déjà signalé dans ma précédente réponse. En VBA on écrit, lit, trie, etc. les cellules d'une feuille à l'autre et ce quelque soit le classeur sans avoir besoin de sélectionner les objets

    Dans le cas qui m'occupe, il n'y a qu'une feuille, La plus part des cellule sont bloquées et les champ nommés ne le sont pas.
    J'ai testé toutes les réponses reçues , mais l'erreur reste toujours la même (erreur 1004).
    Ton histoire m'intrigue. Si tu n'as pas de données sensibles, tu peux publier ton classeur en vue d'un téléchargement, je voudrais effectuer le test moi-même.
    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. #25
    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 : 64
    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
    Bonjour Philippe,

    Je te joint le fichier,
    Un petit mot sur ce dernier,

    L'idée est de créer un formulaire ou l'utilisateur final ne remplis que les plages non bloquée (un formulaire quoi .....).
    Donc l'utilisateur ouvre le fichier, remplis les champ et sauve sous PDF et envoi vers les destinataires.
    Je dois encore implémenter les fonction de sauvegarde et de relecture.
    Attention, dans la version envoyée il y a des feuilles cachées mais qui n'interviennent pas dans les procédures.

    Dans la société ou je travaille, il y bien souvent deux ou trois fichier excell ouvert en même temps. Il est donc impératif de bien définir le fichier sur le quel VBA agit.
    C'est une des raison de variable globale de définition de feuilles.
    Dans l'absolu, je n'utilise pas le select .
    Mais ce fichier a de curieuse réactions ce qui m'amène à des action tout aussi curieuses

    Amusez vous bien

    Merci pour l'aide

    Michel
    Fichiers attachés Fichiers attachés

  6. #26
    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 : 64
    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 à tous,

    la version précedente du fichier est un peu hard..

    Je met un version un peu plus optimale (pas encore finie ....

    michel
    Fichiers attachés Fichiers attachés

  7. #27
    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,

    Les erreurs '1004' que tu rencontrais lors de la manipulation des plages nommées sont bien dues à ce que tes champs sont des cellules fusionnées, et que la référence associée est la première cellule de cette fusion et pas la plage entière.

    Tu as d'ailleurs contourné ton problème en faisant à chaque fois un select, qui a la particularité de toujours sélectionner la plage fusionnée complète, alors que quand tu utilises Range(oName), la plage renvoyée n'est pas le champ fusionné.
    C'est pourquoi l'utilisation de oName.RefersToRange.MergeArea.Locked = True ou Range("toto").MergeArea.Locked = True doit fonctionner dans ton cas, sans avoir besoin de sélectionner quoi que ce soit.

    Par exemple, si tu remplaces
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        wsNew.Range("vtresponsable").Select
        Selection.Locked = False
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        wsNew.Range("vtresponsable").MergeArea.Locked = True
    il n'y a aucune raison que cela provoque une erreur 1004 (peut-être une autre erreur si ta feuille est protégée).


    Ou alors, tu peux aussi redéfinir tes noms en veillant à référencer, pour chaque champ, toutes les cellules qui le composent et pas seulement la première cellule.
    Par exemple : VtResponsable fait référence à =Modele!$F$35:$L$35 (plage fusionnée de F35 à L35) plutôt que =Modele!$F$35. Et à cette condition, plus besoin de passer par MergeArea

  8. #28
    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 : 64
    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 et solution
    Bonjour à tous

    En tapant sur un clou assez longtemps, la lumière fint par jaillir.........µ

    Zenpbb m'a amener à la lumière. Les autres aussi avait le bon chemin, mais je n'écoutait pas.

    Dans ma boucle
    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
     
    For Each oName In wbMoi.Names
        If oName.Name <> "Modele!Print_Area" Then
            'Range(oname) = ""
            If bloque Then
                wsNew.Range(oName).MergeArea.Locked = True
                'oName.RefersToRange.MergeArea.Locked = True
                'Range(oName).Select
                'Selection.Locked = True
            Else
                'oName.RefersToRange.MergeArea.Locked = False
                Range(oName).Select
                Selection.Locked = False
            End If
        End If
    Next oName
    l'erreur était dans le ' In wbMoi.Names'.
    Il est necessaire pour parcourir les noms des plages nommées
    Ensuite pour bloquer les plage j'avais écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Range(oNames).Locked = True
    Ce qui est évidemment une Hérésie.
    Il faut definir complètement la plage pour que le code fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wsNew.Range(oName).MergeArea.Locked = True
    Donc redéfinir le chemin complet ne génère plus d'erreur
    Je peux retirer ce code Select qui m'énerve

    Et pour rester avec un code plus propre, je vais aussi ecrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For Each oName In wbMoi.Names
        If oName.Name <> "Modele!Print_Area" Then
            wsNew.Range(oName) = ""
        End If
    Next oName
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For Each oName In wbMoi.Names
        If oName.Name <> "Modele!Print_Area" Then
            Range(oName) = ""
        End If
    Next oName
    Et taper sur ma tête pour faire rentrer que un "Each in " n'est pas un 'With'

    Hormis le mal de tête je vais passer une bonne journée

    Un grand merci à tous

    Avant de marquer ce fil comme résolu, je vais encore attendre les réactions.
    Tout le monde ne tombe sans doute pas de son lit à 05h00.......

    Michel

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

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, 11h52
  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, 09h51
  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, 10h13
  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, 10h55
  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, 17h13

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