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 :

Définir un nom [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 13
    Par défaut Définir un nom
    Bonjour,

    je voudrais definir un nom sur un tableau mais en utilisant des variables.
    Mon code est le suivant

    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
    Dim nLD As Integer
            nLD = Range("A3000").End(xlUp).Row
    
            Dim nCD As Integer
            nCD = Range("A1").End(xlToRight).Column
    
        ActiveWorkbook.Names.Add Name:="desc", RefersToR1C1:= _
            "=description!R1C1:R & nLD & C & nCD"
        ActiveWorkbook.Names("desc").Comment = ""
        
        Windows("articles.xlsx").Activate
        
        Dim nCA As Integer
            nCA = Range("A1").End(xlToRight).Column
          
        Cells(1, nCA + 1).Select
        ActiveCell.FormulaR1C1 = "description"
        
        Cells(2, nCA + 1).Select
        ActiveCell.FormulaR1C1 = _
            "=VLOOKUP(RC[-51],description.xlsx!desc,3,FALSE)"
        Selection.AutoFill Destination:=Range("AZ2:AZ545"), Type:=xlFillDefault
        Range("AZ2:AZ545").Select

    Cependant, j'utilise une fonction rechercheV utilisant se nom mais le résultat donnée est faux #N/A
    Est ce que la partie en rouge est bien noté?

    Une autre, j'en profite, je voudrais que ma variable nCA remplace -51 ecrit en bleu mais je ne trouve pas la syntaxe et il me restera a trouver la suntaxe des Ranges pour remplacer les valeurs fixent par des variables.

    Merci d'avance pour votre aide
    Sylvain

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Tu as un problème dans les entrées et sorties dans la manipulation des chaines de caractères
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveWorkbook.Names.Add Name:="desc", RefersToR1C1:= _
    "=description!R1C1:R" & nLD & "C" & nCD

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveCell.FormulaR1C1 = _
    "=VLOOKUP(RC[" & nCA & "],description.xlsx!desc,3,FALSE)"

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 13
    Par défaut
    bonsoir,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveCell.FormulaR1C1 = _
    "=VLOOKUP(RC[" & -nCA & "],description.xlsx!desc,3,FALSE)"
    Ce code fonctionne bien, j'ai rajouter le (-) en plus, c'est nickel

    Cependant le premier code génère tjs un problème et passe au #NOM?
    Je n'arrive pas à voir le problème, je constate juste que l'attribut Valeur de desc dans gestion des noms ne contient rien, si vous avez une idée je suis preneur?

    Sylvain

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Et sans utiliser la référence R1C1 ? Je n'ai pas testé le code que je poste donc, adapte ou revient avec plus de précisions. Quand on utilise plus d'un classeur dans le code il est recommandé d'utiliser des variables explicites afin de ne pas risquer d'avoir des résultats loufoques. Il en va de même pour les feuilles :
    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
     
    Sub Formule()
     
        Dim nCA As Integer
        Dim nLD As Integer
        Dim nCD As Integer
        Dim Col As String
     
        'recherche de la dernière ligne et colonne utilisée
        '(on ne sait pas si la bonne feuille est celle qui est active ???)
        With ActiveSheet 'un 'Worksheets("Nom de la Feuille")' serait mieux
            nCD = .Cells.Find("*", .[A1], xlFormulas, , xlByColumns, xlPrevious).Column
            nLD = .Cells.Find("*", .[A1], xlFormulas, , xlByRows, xlPrevious).Row
        End With
     
        'récupère la ou les lettres de la dernière colonne utilisée
        Col = Left(Columns(nCD).Address(0, 0), InStr(Columns(nCD).Address(0, 0), ":") - 1)
     
        'inscription du Nom
        ActiveWorkbook.Names.Add Name:="desc", RefersTo:="=description!A1:" & Col & nLD
     
        ActiveWorkbook.Names("desc").Comment = ""
     
        Workbooks("articles.xlsx").Activate
     
        'ici non plus ???
        With ActiveSheet
            nCA = .Cells.Find("*", .[A1], xlFormulas, , xlByColumns, xlPrevious).Column
        End With
     
        Col = Left(Columns(nCA + 1).Address(0, 0), InStr(Columns(nCA + 1).Address(0, 0), ":") - 1)
     
        Cells(1, nCA + 1) = "description"
     
        With Cells(2, nCA + 1)
            .Formula = "=VLOOKUP(" & Col & "2,description.xlsx!desc,3,FALSE)"
            .AutoFill Destination:=Range("AZ2:AZ545"), Type:=xlFillDefault
        End With
     
        Range("AZ2:AZ545").Select
     
    End Sub
    Hervé.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 13
    Par défaut
    Hello,

    Merci pour votre aide, c'est nickel

    bonne fin de journée et encore Merci
    Sylvain

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

Discussions similaires

  1. [debutant][struts] Définir le nom dune composante html
    Par pmartin8 dans le forum Struts 1
    Réponses: 1
    Dernier message: 05/05/2006, 14h38
  2. [VBA-E]Définir un nom au classeur créé
    Par LeSqual dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 01/05/2006, 09h37
  3. [FPDF] définir le nom du pdf créé
    Par fabrice1596 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 07/04/2006, 09h40
  4. Réponses: 21
    Dernier message: 18/08/2005, 16h06
  5. Réponses: 7
    Dernier message: 07/09/2004, 14h16

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