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 :

Nommer une plage de cellule par rapport à une valeur de cellule [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2013
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 13
    Points : 8
    Points
    8
    Par défaut Nommer une plage de cellule par rapport à une valeur de cellule
    Bonjour,

    Je cherche à nommer une plage de cellule à partir d'une valeur d'une autre cellule.

    Je m'explique plus clairement :

    Sous VBA, j'utilise le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim MaPlage as Range
    Set MaPlage =  Range("A2":"A40")
    Names.Add Name:=Range("A1").value, RefersTo := MaPlage
    Cela ne marche pas, visiblement le "Range("A1") ne passe pas bien comme nom de plage...

    Auriez vous une idée, solution ?

    Merci d'avance !

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Points : 1 562
    Points
    1 562
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim MaPlage As Range
    Set MaPlage = Range("A2:A40") ' Corrigé
    Names.Add Name:=CStr(Range("A1").Value), RefersTo:=MaPlage 'J'ai rajouté la conversion en string forcée
    Bonne journée

    Attention: vous ajoutez le range nommé au workbook actif .... si vous pointez sur un autre classeur, ça va s'enregistrer ailleurs

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2013
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Salut Vinc,

    Merci pour ta réponse rapide. J'ai adapté ta réponse à mon code mais j'ai une erreur d'exécution 1004 : Erreur définie par l'application ou l'objet,

    Je post mon code exact, peut être que tu verras ce qui cloche car je tourne en rond là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim N As Integer
    N = Sheets("Listes sociétés").Range("ZZ4").End(xlToLeft).Column + 0
    Dim MaPlage As Range
    Set MaPlage = Sheets("Listes sociétés").Range("A4:A40").Offset(0, N)
    Names.Add Name:=CStr(Range("K7").Value), RefersTo:=MaPlage
    Tout ceci est sous un bouton activX de la feuille principale où se trouve la range("K7").

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Points : 1 562
    Points
    1 562
    Par défaut
    Rebonjour;

    Non, sans un exemple des feuilles associées, c'est moi qui tourne en rond .... en particulier entre le range K7 et la colonne ZZ ....
    Je pronostiquerai bien un erreur récurrent, quand les gens n'utilisent pas le .currentRegion pour un range

    Je ne sais pas si le code a été adapté d'un enregistrement macro, mais il est assez .... original

  5. #5
    Futur Membre du Club
    Inscrit en
    Mars 2013
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Voici mon fichier

    Cela va sans doute t'éclairer !

    Permis feu.xlsm

  6. #6
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Points : 1 562
    Points
    1 562
    Par défaut
    A la louche, quelquechose comme

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    Sub Assign_Rng_Name()
     
    Dim Wsh As Worksheet
    Dim SrcRng As Range, ColRng As Range
    Dim RngN As String
    Dim ColN As Single, RowOffs As Single
     
    ' Init
        Set Wsh = ThisWorkbook.Worksheets("Listes sociétés")
        Set SrcRng = Wsh.Range("A2").CurrentRegion
        Debug.Print SrcRng.Address
     
        If SrcRng.Cells.Count = 0 Then Exit Sub
     
        For ColN = 1 To SrcRng.Columns.Count
     
            Set ColRng = SrcRng.Columns(ColN)
            Debug.Print ColRng.Address
     
            If ColN = 1 Then
     
                RngN = CStr(SrcRng(1, ColN).Value)
     
                Set ColRng = ColRng.Offset(1, 0).Resize(ColRng.Rows.Count - 1, 1)   ' Toutes les lignes non vides sauf la 1ere
                Debug.Print ColRng.Address
     
                ThisWorkbook.Names.Add Name:=RngN, RefersTo:=ColRng
                Debug.Print ColRng(1, 1).V
     
                Else:
     
                    RngN = Replace(CStr(SrcRng(2, ColN).Value), " ", "_")
     
                    If (RngN <> vbNullString) And (Not (IsEmpty(SrcRng(3, ColN)))) Then
     
                        Set ColRng = ColRng.Offset(2, 0).Resize(ColRng.Cells.Count - 2, 1)  ' Toutes les lignes non vides sauf les 2 premières
                        Debug.Print ColRng.Address, ColRng.SpecialCells(xlCellTypeConstants).Address
                        Set ColRng = ColRng.SpecialCells(xlCellTypeConstants)
     
                        ThisWorkbook.Names.Add Name:=RngN, RefersTo:=ColRng
     
                    End If
     
            End If
     
        Next ColN
     
    End Sub

  7. #7
    Futur Membre du Club
    Inscrit en
    Mars 2013
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Avec du retard, je viens d'adapter un peu tout ce que tu avais posté et ça fonctionne !
    Merci beaucoup !

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

Discussions similaires

  1. Décalege d'une cellule par rapport à une autre
    Par anisse9 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/03/2010, 14h52
  2. [XL-2007] Incrémentation de cellule par rapport à une autre
    Par schmitx dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/01/2010, 12h25
  3. [XL-2003] Recherche de cellules par rapport à une autre
    Par martinmacfly dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/12/2009, 15h27
  4. [XL-2007] Conditionnal formating d'une cellule par rapport à une autre
    Par rouget dans le forum Excel
    Réponses: 5
    Dernier message: 11/11/2009, 00h54
  5. Copier/coller d'une cellule par rapport à une autre
    Par AzelRoth dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/02/2009, 16h54

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