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 :

MACRO : Donner un nom à une sélection en cours


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ergonome
    Inscrit en
    Octobre 2019
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Vietnam

    Informations professionnelles :
    Activité : Ergonome
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2019
    Messages : 45
    Par défaut MACRO : Donner un nom à une sélection en cours
    Bonjour du Vietnam les ami(e)s,


    J'ai fait deux tris dans une base de données (feuille "BD")
    J'ai sélectionné une colonne...
    Que j'ai copié sur une autre feuille,
    J'ai sélectionné les éléments
    Que j'ai trié

    (jusque là tout va bien, mais lorsque j'essaye de donner un nom à ma sélection, l'enregistreur de macro me dit de me rhabiller :p )

    je suis bloqué ici :

    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
     
    Sub AUp6()
    '
    ' AUp6 Macro
    '
     
    '
        Sheets("BD").Select
        ActiveSheet.Range("$B$2:$BC$875").AutoFilter Field:=9, Criteria1:="5"
        ActiveSheet.Range("$B$2:$BC$875").AutoFilter Field:=4, Criteria1:="35"
     
            Range("D:D").Select
            Selection.Copy
     
                Sheets("Mobs").Select
                Range("N:N").Select
                Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                    :=False, Transpose:=False
     
                    Range("N3").Select
                    Set tbl = ActiveCell.CurrentRegion
                    tbl.Offset(0, 0).Resize(tbl.Rows.Count, tbl.Columns.Count).Select
     
                            Application.CutCopyMode = False
                            ActiveWorkbook.Worksheets("Mobs").Sort.SortFields.Clear
                            ActiveWorkbook.Worksheets("Mobs").Sort.SortFields.Add Key:=Range("N3"), _
                                SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
                            With ActiveWorkbook.Worksheets("Mobs").Sort
                                .SetRange Range("N3:N71")
                                .Header = xlNo
                                .MatchCase = False
                                .Orientation = xlTopToBottom
                                .SortMethod = xlPinYin
                                .Apply
                            End With
     
    End Sub
    Qu'en pensez vous ? Où ai je fait l'erreur sur l'enregistreur de macro car il ne m'a rien enregistré pour l'enregistrement de ma sélection

    là, la sélection des noms est sélectionnée et triée par ordre alphabétique...

    Comment faire faire pour lui donner un nom (dans le gestionnaire des noms).


    Comment réinitialiser ce nom en début de macro (car à chaque exécution de la macro le nombre de ligne peut varier, mais si pas besoin, c'est parfait )

    Par avance merci pour votre aide et bonne journée à tous

    David

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Barba Voir le message
    l'enregistreur de macro me dit de me rhabiller :p )
    Si tu pouvais remplacer cette brillante métaphore par le véritable message d'erreur et le numéro de la ligne de code désignée par le débugage, ça faciliterait la résolution de ton problème.

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour à tous,

    Suis-je bien réveillé ? Aucune trace de nommage dans ton code.
    Avec une variable Range nommée pl :
    pl.name="ton_nom"
    eric

  4. #4
    Membre averti
    Homme Profil pro
    Ergonome
    Inscrit en
    Octobre 2019
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Vietnam

    Informations professionnelles :
    Activité : Ergonome
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2019
    Messages : 45
    Par défaut
    Citation Envoyé par Menhir Voir le message
    il n'indique rien et n'enregistre rien .... (pour répondre à ta question )

    Citation Envoyé par MarcelG Voir le message
    Aucun message d'erreur, il ne m'a tout simplement rien enregistré sur le nom... de la sélection
    si si ... le tableau auto, marche très bien essaye stp

    Citation Envoyé par eriiic Voir le message
    je n'ai pas compris ce que tu voulais m'expliquer (excuse moi)

    mais je ne peux pas faire de range, puisque la macro me sélectionne juste ce qu'il me faut , sinon suivant tel ou tel cas, j'aurais des lignes en moins, ou un nombre de lignes bcp trop élévé... ce qui ne convient pas

  5. #5
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    Certes l'enregistreur de macros peut rendre service.
    Cela étant, il est absolument nécessaire de le consérer avec un certain recul pour
    1 - l'épurer des méthodes Select et Activate qui n'ont aucun effet si ce n'est d'alourdir le code
    2 - rattacher les objets Range et Worksheets à leurs parents respectifs.

    Quel message d'erreur as-tu rencontré?

    Cela étant, avant d'utiliser l'enregistreur, tu peux essayer de définir un nom sur le tableur Excel.
    L'erreur éventuelle serait d'abord sur Excel avant VBA.

    Parallèlement, cette ligne me laisse sceptique:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tbl.Offset(0, 0).Resize(tbl.Rows.Count, tbl.Columns.Count).Select

  6. #6
    Membre averti
    Homme Profil pro
    Ergonome
    Inscrit en
    Octobre 2019
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Vietnam

    Informations professionnelles :
    Activité : Ergonome
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2019
    Messages : 45
    Par défaut
    J'ai trouvé ça et je l'ai adapté à mes valeurs qui se situent dans tbl

    si un jour cela peut aider quelqu'un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                                        ActiveWorkbook.Names.Add Name:="Mobs6", RefersToR1C1:=tbl
    ça fonctionne parfaitement.... sans avoir 10 000 lignes en trop, juste la sélection en cours

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    mais je ne peux pas faire de range, puisque la macro me sélectionne juste ce qu'il me faut
    C'est quoi ta sélection sinon un range ?
    Selection.name="toto"
    Et nul besoin de faire un .Select pour nommer une plage.
    tbl.name="toto"
    eric

  8. #8
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut

    si si ... le tableau auto, marche très bien essaye stp
    Je ne peux que rejoindre les posteurs précédents pour te recommander une certaine rigueur.

    A titre d'exemple.
    Après avoir sélectionné sur le tableur une cellule au sein d'une plage, pourrais-tu lancer l'exécution du code 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
    Option Explicit
     
    Public Sub essai_tbl()
     
    Dim tbl As Range
     
    Dim a1 As String
    Dim a2 As String
     
    Set tbl = ActiveCell.CurrentRegion
     
    a1 = tbl.Offset(0, 0).Resize(tbl.Rows.Count, tbl.Columns.Count).Address
    a2 = tbl.Address
     
    MsgBox _
            Prompt:="Les 2 adresses sont-elles identiques?" & Chr(13) & "La réponse est " & (a1 = a2), _
            Buttons:=vbCritical, _
            Title:="Vérification"
     
    Set tbl = Nothing
     
    End Sub
    Moralité.
    Mieux vaut connaître ses bases pour juger de l'opportunité des méthodes et propriétés que l'on code.
    En VBA, comme dans bien d'autres domaines, une règle est de mise: la rigueur, pas le bidouillage. (Je le dis gentiment).

    Consulte régulièrement le Forum et la Faq. Et assimile les codes reportés.
    Pour les connaissances de base, tu peux consulter cette discussion.

    Je te souhaite une bonne continuation.

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

Discussions similaires

  1. Donner un nom à une sauvegarde via une procédure stockée
    Par arthuro45 dans le forum Administration
    Réponses: 1
    Dernier message: 28/09/2010, 12h32
  2. [WD-2003] Donner un nom à une table ?
    Par Claythest dans le forum VBA Word
    Réponses: 16
    Dernier message: 17/05/2010, 10h27
  3. Donner un nom à une variable
    Par ricololo dans le forum MATLAB
    Réponses: 9
    Dernier message: 19/09/2008, 09h10
  4. donner un nom à une forme (shape)
    Par danest dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/01/2008, 14h36
  5. Macro en fonction d'une sélection de plage de cellules.
    Par Labiche dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/08/2006, 10h23

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