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 :

Resize plage nommée [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 25
    Points : 15
    Points
    15
    Par défaut Resize plage nommée
    Bonjour à tous,
    j'ai essayé tout ce que j'ai trouvé sur les forums mais je n'arrive pas à faire ceci :
    j'ai une plage nommée ActiveWorkbook.Names("ListeRisqueTechnique") qui va de AC4 à AC159.
    Je crée une nouvelle ligne et donc, je veux qu'elle aille de AC4 à "AC & nouveau numéro de ligne".
    Je ne sais pas ce qui ne va pas mais j'ai eu tous les codes erreurs possibles.
    Est-ce que quelqu'un pourrait m'aider s'il vous plaît ?
    Je ne veux pas faire de delete avant parce que sinon, les tableaux qui y font référence se mettent en #erreur.
    Comment je lui dit que je veux faire un resize ?
    Quand je passe par l'enregistreur de macro, il fait ça (j'ai juste ajouté la partie variable du n° de ligne) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With ActiveWorkbook.Names("ListeRisqueTechnique")
                    .Name = "ListeRisqueTechnique"
                    .RefersToR1C1 = "='Affaires en cours'!R4C29:R" & CStr(NumLigneProjet) & "C29"
                End With
    Merci de votre aide, je ne m'en sors vraiment pas...

  2. #2
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Bonjour,
    voici un code qui fait ce que tu souhaites, adapte le à ton cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub nom_plage()
    Dim maplage As String, derligne As Long
    'récupère le n° de la dernière ligne remplis
    derligne = Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row
     
    'définition de ma plage
    maplage = "A1:H" & derligne
     
    'définition du nom de la plage
    ActiveWorkbook.Names.Add Name:="plage1", RefersTo:="=Feuil1!" & maplage
     
    'sélectionne la plage
    Range("plage1").Select
    End Sub
    si tu modifies la plage en rajoutant une ligne il va modifier ou créer une plage avec le même nom mais des références Différentes.

  3. #3
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 25
    Points : 15
    Points
    15
    Par défaut Merci Hervé mais il y a encore un souci.
    Avec ton code ça me donne une nouvelle plage or il faut que j'utilise toujours la même.

  4. #4
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Je viens de faire un test ou je modifie mon tableau en rajoutant ou supprimant des lignes et j'ai bien une plage qui à toujours le même nom avec l'adresse adaptée.

    As-tu changer le nom de la plage de mon code et mis le nom de ta plage?

    Peux-tu mettre ton code afin que l'on puisse voir ce qu'il en est?

    merci

    Essaye avec ceci:
    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
    Sub nom_plage()
    Dim maplage As String, derligne As Long
     
    'récupère le n° de la dernière ligne remplis
    derligne = Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row
     
    'définition de ma plage
    maplage = "A1:H" & derligne
     
    'Modification de la plage
    With ActiveWorkbook.Names("plage1")
            .Name = "plage1"
            .RefersTo = "=Feuil1!" & maplage
    End With
     
    'sélectionne la plage
    Range("plage1").Select
    End Sub

  5. #5
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 25
    Points : 15
    Points
    15
    Par défaut Je pense que je n'ai pas tout compris
    Je pense que je n'ai pas bien compris ce que tu as écrit dans ton code.
    Voilà ce que j'ai mis.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Sub nom_plage()
    Dim maplage As String, derligne As Long
     
    'définition de ma plage
    maplage = "A4:A" & derligne
     
    'définition du nom de la plage
    ActiveWorkbook.Names.Add Name:="ListeRisqueTechnique", RefersTo:="=Affaires en cours" & maplage
     
    'sélectionne la plage
    Range("ListeRisqueTechnique").Select
    End Sub

  6. #6
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    ok voici le code avec les changements:
    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
    Sub nom_plage()
    Dim maplage As String, derligne As Long
     
    'récupère le n° de la dernière ligne remplis
    derligne = Sheets("Affaires en cours").Range("AC" & Rows.Count).End(xlUp).Row
     
    'définition de ma plage
    maplage = "AC4:AC" & derligne
     
    'modification de la plage
    With ActiveWorkbook.Names("ListeRisqueTechnique")
            .Name = "ListeRisqueTechnique"
            .RefersTo = "=Affaires en cours!" & maplage
    End With
     
    'sélectionne la plage
    Range("ListeRisqueTechnique").Select
    End Sub

  7. #7
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    Il y a un mieux très net mais il se passe quand même quelque chose de très bizarre.
    Au lieu d'avoir comme résultat
    ='Affaires en cours'!$AC$4:$AC$160

    j'ai
    =Affaires en cours!BU163:BU319

    Pourtant, quad je trace, maplage est bien égale à AC4:AC160

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    maplage = "AC4:AC" & CStr(NumLigneProjet)
     
                With ActiveWorkbook.Names("ListeRisqueTechnique")
                    .Name = "ListeRisqueTechnique"
                    .RefersTo = "=Affaires en cours!" & maplage
                End With
    Je vais aller déjeuner et retester. C'est franchement bizarre.

    Si j'ajoute des ' au .RefersTo = "=Affaires en cours!" & maplage, il ne modifie plus la plage.
    Quand je regarde avec le débogueur, il la trouve et ne tient pas compte de ce que j'ai mis dans "maplage".

  8. #8
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 25
    Points : 15
    Points
    15
    Par défaut J'ai trouvé en partie
    J'ai trouvé pour la partie nom de l'onglet mais il continue de remplacer maplage par BU163:BU319.
    Je continue de chercher.
    Mais bon, j'ai bien avancé grâce à toi, merci beaucoup.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With ActiveWorkbook.Names("ListeRisqueTechnique")
                    .Name = "ListeRisqueTechnique"
                    .RefersTo = "='" & ActiveSheet.Name & "'!" & maplage
    End With

  9. #9
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Bonjour,

    J'ai testé avec le code suivant sans rencontrer de problème particulier
    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
    Sub nom_plage()
    Dim DerLigne As Long
     
    With Worksheets("Affaires en cours")
    'récupère le n° de la dernière ligne remplie
    DerLigne = .Range("AC" & .Rows.Count).End(xlUp).Row
    End With
     
    'Modification de la plage
    With ActiveWorkbook.Names("ListeRisqueTechnique")
        .Name = "ListeRisqueTechnique"
        .RefersToR1C1 = "='Affaires en cours'!R4C29:R" & DerLigne & "C29"
    End With
     
    'sélectionne la plage
    Worksheets("Affaires en cours").Select
    Worksheets("Affaires en cours").Range("ListeRisqueTechnique").Select
    End Sub
    Cordialement.

  10. #10
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 25
    Points : 15
    Points
    15
    Par défaut C'est bon !!!
    Merci ! Ça marche !!!
    Ouf !!!
    Tu es génial.
    C'est vraiment gentil de ta part d'avoir bien voulu continuer jusqu'au bout alors que ça marchait chez toi.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Boucle sur plages nommées
    Par Xavier34 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/11/2007, 17h50
  2. 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
  3. 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
  4. 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
  5. 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

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