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 :

Création d'un nom de cellule position variable en VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Amateur
    Inscrit en
    Juin 2010
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Juin 2010
    Messages : 136
    Par défaut Création d'un nom de cellule position variable en VBA
    Bonjour,

    Je cherche à crée automatiquement une zone à transférer vers Acces à partir d'une feuille téléchargée dont je ne connais pas à priori les 'coins'

    J'essaye d'adapter une macro enregistrée (je ne possède pas bien les notions VBA Excel, ... bien que j'ai lu les tutos ...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Cells.Find(What:="Energie", After:=ActiveCell, LookIn:=xlFormulas, _
            LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False).Activate
        ActiveWorkbook.Names.Add Name:="HautGauche", RefersToR1C1:="=Sheet1!R10C1"
        ActiveWorkbook.Names("HautGauche").Comment = ""
     
    ...
    Pour généraliser la position du coin HautGauche j'ai essayé de parametrer "R10C10"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Cells.Find(What:="Energie", After:=ActiveCell, LookIn:=xlFormulas, _
            LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False).Activate
        R1 = ActiveCell.Cells.Row
        C1 = ActiveCell.Cells.Column
        ActiveWorkbook.Names.Add Name:="HautGauche", RefersToR1C1:="=Sheet1!R" & R1 & "C" & C1 & Chr(34)
     
    ...
    Mais cela ne marche pas!

    Il y a peut-être une instruction directe (que je n'ai pas trouvée) ou comment faire avec cette approche ?

    Merci

  2. #2
    Membre Expert Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Par défaut
    Bonjour JFDAccess,

    Apres le Find, tu peux mettre le résultat dans un variable de type Range pour ensuite utiliser la propriété Address.

    Voila un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub test()
        Dim rg As Range, Adresse$
            Set rg = ActiveSheet.Cells.Find(What:="Energie")
            If Not rg Is Nothing Then
                Adresse = rg.Address(ReferenceStyle:=xlR1C1, External:=True)
                Adresse = Split(Adresse, "]")(1)
                Adresse = "=" & Adresse
                ActiveWorkbook.Names.Add Name:="HautGauche", RefersToR1C1:=Adresse
            End If
    fin:
        Set rg = Nothing
    End Sub
    Tu peux exécuter en mode pas à pas pour voir les valeurs que prend la variable Adresse.

  3. #3
    Membre confirmé
    Homme Profil pro
    Amateur
    Inscrit en
    Juin 2010
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Juin 2010
    Messages : 136
    Par défaut
    Merci,

    Mais j'obtiens la même erreur qu'avec ma méthode :

    Nom : Erreur 1004.jpg
Affichages : 234
Taille : 38,9 Ko

    J'ai essayé de supprimer l'instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Adresse = "=" & Adresse
    Pas d'erreur, et :
    • On ne voit rien dans le combobox

      Nom : Sans titre-3.jpg
Affichages : 180
Taille : 24,9 Ko
    • Alors que le nom semble bien défini dans la liste

      Nom : Sans titre-2.jpg
Affichages : 202
Taille : 27,2 Ko


    Je crains que la zone que j'aurai défini de la sorte pose des problèmes dans le transfert vers Access

    Question complémentaire : (j'abuse des bonnes choses, ...

    Avec le code ci dessous, une fois la cellule trouvée, le curseur est positionné dessus,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Cells.Find(What:="Energie", After:=ActiveCell, LookIn:=xlFormulas, _
            LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False).Activate
    Alors qu'avec le code du test le curseur reste sur sa position, ce qui interdit la recherche du coin bas droit de la zone voulue via

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Selection.End(xlDown).Select
    Selection.End(xlToRight).Select
    qui devrait me permettre de définir le range voulu

  4. #4
    Membre Expert Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Par défaut
    Bonjour,

    Chez moi le code test fonction comme il faut. As-tu essayé le pas à pas pour voir les valeurs successive de Adresse ?

    Ensuite une fois que ta cellule est dans la variable rg il te suffit de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set rg = rg.End(xlDown)
    Set rg = rg.End(xlToRight)
    Car les sélections sont inutiles.

  5. #5
    Membre confirmé
    Homme Profil pro
    Amateur
    Inscrit en
    Juin 2010
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Juin 2010
    Messages : 136
    Par défaut
    Comme je le disais, le code fonctionne bien pour créer le nom de la bonne cellule et on le retrouve bien dans la liste mais pas dans le combobox (en haut à gauche).

    merci pour l'utilisation de rg.

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/08/2013, 15h41
  2. Création table avec nom variable
    Par manu971 dans le forum VBA Access
    Réponses: 2
    Dernier message: 09/11/2010, 18h15
  3. nom de cellule dans une variable
    Par Domino40 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 31/10/2009, 18h14
  4. nom onglet = cellule + variable si nom deja existant
    Par OSULIVAN dans le forum Excel
    Réponses: 2
    Dernier message: 10/12/2008, 16h36
  5. Réponses: 4
    Dernier message: 30/05/2006, 17h21

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