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 :

Mise en forme bordure par Macro sur plage nommée


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Mise en forme bordure par Macro sur plage nommée
    Bonjour;
    J'ai une macro qui me fais une mise en forme bordure sur tous les plages nommées de la feuille 4 (excel 97).
    Les plages sont des plages nommées dynamique avec une formule du style =DECALER... .
    Cet Macro marchait très bien jusqu'au jour ou j'ai créé d'autres plages nommées sur d'autres feuilles; depuis ca me fais m'importe quoi!
    Voici le code (en fin de message):
    Avez vous une idée du problème?
    Je pense qu'il faut spécifier à la macro de travailler uniquement sur les plages nommées de la feuille 4 mais je suis débutant et je ne sais pas faire.
    Merci par avance de votre aide.

    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
    Private Sub CommandButton1_Click()
    Dim i As Byte
    Dim n As Name 
     
    For Each n In ActiveWorkbook.Names
    For i = 0 To 15
    Range(n.Name).Offset(0, i).BorderAround Weight:=xlMedium
    On Error GoTo erreur
    Next i
    Next n
    erreur:
    Range("R5:AE1000").Select
    Selection.Borders(xlEdgeLeft).LineStyle = xlNone
    Selection.Borders(xlEdgeTop).LineStyle = xlNone
    Selection.Borders(xlEdgeBottom).LineStyle = xlNone
    Selection.Borders(xlEdgeRight).LineStyle = xlNone
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
    Range("A6").Select
    End Sub

  2. #2
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Bonjour. Bienvenue sur les forums de www.developpez.com. J'espère que tu trouveras ici un espace de partage de compétences, et que tu apporteras ta pierre à l'édifice...

    Prends quelques minutes pour lire la façon d'intervenir sur les forums, les règles en usage, ...

    Tu as la possibilité, dans les messages que tu rédiges, d'utiliser des balises qui mettent ton message en forme, et notamment la mise en forme du code. Ainsi, une fois ton code collé dans le corps de ton message, sélectionne-le et clique sur le bouton #. Cela ajoutera les balises de code et ton message sera plus lisible.


    La plus générique des solutions est de vérifier si le nom de l'onglet est présent dans la référence de la plage nommée (= la formule decaler(...))

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        For Each n In Names
            If InStr(1, n.Value, "Feuil1") Then MsgBox n.Name
        Next
    Ok?

    Au plaisir de te rencontrer à nouveau en ce lieu
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    tu peux toujour esayer de remplacer activeworkbook par ActiveSheet, ça me semble le plus simple, si tu lance ta macro depûis la feuille en question, sinon tu la nomme expressément.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    For Each n In worksheets("mafeuille").Names

  4. #4
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Salut Alsimbad,

    Ta solution ne reprendra pas tous les noms qui pointent vers des plages de Feuil1, mais seulement celles qui sont attribuées explicitement à Feuil1 par une affection du type Feuil1!MonNom.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    salut pierre
    Citation Envoyé par tempo
    Je pense qu'il faut spécifier à la macro de travailler uniquement sur les plages nommées de la feuille 4
    mais a la fois c'est un peu ça qu'il veut, je pense

  6. #6
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Salut...

    En fait, c'est une question d'appréciation de sa question. Soit il veut travailler uniquement sur les plages affectées explicitement à une feuille, soit il veut travailler avec les plages contenues sur la feuille.

    Dans le premier cas, ta solution est la bonne, dans le deuxième, c'est la mienne.

    Mais dans tous les cas, nos réponses l'éclaireront sur les manières de gérer les plages nommées...

    Je te souhaite un bon dimanche (vaguement ensoleillé chez nous...)

    A bientôt

    Amicalement
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    ok alors, bon dimanche aussi.

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Quelques détails:

    1) le nom de l'onglet est présent dans la référence de la plage nommée.
    2) Je veux que ma macro travail uniquement sur les plages nommées de la feuille 4 (plage nommées contenue dans la feuille 4).


    J'ai testé la solution de Alsimbad (For Each n In worksheets("mafeuille").Names); mais le debegeur me renvoie une erreur d'exécution 9 "indice en dehors de la plage"

    Pour la solution de Pierre ( If InStr(1, n.Value, "Feuil1") ...) ca fait rien du tout.

    Je suis vraiment perdu.

  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    Indice en dhors de la plage signifie généralement qu'il y a un difference dans les noms de feuilles. Vérifie que tu n'as pas "ma_feuille" ou "Mafeuille". le mieux est de copier/coller le nom de la feuille

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    J'ai résolu le problème; le code marche.
    Je pense qu'il y avait un problème (de réference ou autre) sur le bouton de commande qui lance la Macro.

    Enfin merci à tous pour votre aide; je pense que je ne tarderai pas à poster de nouveau pour un autre problème. Les macro et moi ca fait deux.

    Bonne soirée.

  11. #11
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Si ton problème est résolu, il y a un bouton, en bas de discussion pour le signaler aus autres intervenants de ce forum.

    Merci.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

Discussions similaires

  1. [XL-2010] Manipuler les mises en forme conditionnelles par macro
    Par EmmanuelleC dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 03/04/2014, 17h44
  2. [XL-2002] Besoin d'aide pour finaliser Macro mise en forme + bordure
    Par warrio67 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/03/2010, 05h23
  3. Réponses: 5
    Dernier message: 17/06/2008, 15h17
  4. Réponses: 2
    Dernier message: 29/05/2007, 14h16
  5. Etat, mise en forme différente par detail
    Par Kinian dans le forum IHM
    Réponses: 4
    Dernier message: 06/05/2006, 12h07

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