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 :

[e-00][debutant]probleme dans la selection de ranges


Sujet :

Macros et VBA Excel

  1. #1
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut [e-00][debutant]probleme dans la selection de ranges
    Bonjour,

    voici ma petite problématique, elle doit être due à une incompréhension du fonctionnement des cellules Excel et des références entre range.

    J'ai ceci dans un fichier

    AAA..........BBBBBBB
    ...............BBBBBBBB

    CCC
    DDD

    EEE

    FFF
    Je positionne le curseur sur AAA, le but est que la macro;
    - copie AAA
    - vienne se placer sur la colonnedes BBBBB
    - se positionne sous la dernière ligne de cette colonne
    - y colle AAA
    - se repositionne sur la cellule de départ AAA
    - aille jusqu'au prochain emplacement non vide de la colonne (CCC)
    Pour cela j'ai mis le 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
     
    '1) selection et mémorise code Gamme
     
        Set a = Range(Selection, Selection)
        Selection.Copy
    '2) se positionne sur la dernière colonne/dernière ligne +1
        Selection.End(xlToRight).Select
        Selection.End(xlDown).Select
        Selection.Offset(1, 0).Select
    '3) Colle le Code Gamme
        ActiveSheet.Paste
    '4) Se repositionne sur A
     
        Selection = Range(a, a)
        Selection.End(xlDown).Select
    L'idée étant de mémorise la cellule de départ dans A pour y retourner.
    Les étapes 1 à 3 incluses se passent bien.
    Par contre la ligne 1 de l'étape 4 semble ne fonctionne pas. Au lieu de me repositionner sur la cellule de départ sur la colonne AAA il reste sur la colonne du BBB puis exécute la dernière instruction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Selection.End(xlDown).Select
    Et mon curseur se retrouve sur la ligne 65536 soit un peu loin de ce que je souhaite.
    je ne comprend pas bien mon erreur ? Est-ce du au fait que a est devenu un pointeur sur le range de selection et qu'il s'est modifié avec Selection, de sort que l'avant dernière instruction le fait rester sur place ?

    le cas échéant comment puis-je faire autrement ?

    merci de votre aide précieuse,

    Bien cordialement

    Cladsam

  2. #2
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    On n'utilise le .Select que pour sélectionner une cellule au profit de l'opérateur. Pas pour le code.

    Quelques idées pour t'inspirer
    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
    Sub essai()
    Dim maCol As Excel.Range, maCell As Excel.Range, LastCell As Excel.Range
     
    'cellule active
    Set maCell = Application.ActiveCell
    'recherche de la dernière cellule en colonne
    Set LastCell = Application.Cells(Application.Rows.Count, maCell.Column).End(xlUp)
     
    'copier la cellule au bout à droite et en bas
    maCell.Copy maCell.End(xlRight).End(xlDown)
     
     
    If Not (maCell Is LastCell) Then
        'chercher la suivante
        Do
            Set maCell = maCell.Offset(1, 0)
            If Not IsEmpty(maCell) Then Exit Do
        Loop
        'on est sur la suivante(instance de maCell, sans select)
    End If
     
    End Sub
    En espérant que cela t'aide,

    PGZ

  3. #3
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut
    Bonjour,

    merci pour cette réponse, en fait je viens de trouver une solution qui marche bien. IL suffisait de faire
    en lieu et place de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection = Range(a, a)

  4. #4
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Et la sélection de la première cellule non vide en dessous fonctionne?

    PGZ

  5. #5
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut
    Oui, ca c'est le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.End(xlDown).Select
    qui le fait.

    merci pour ton temps

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

Discussions similaires

  1. Problem dans une select List en ASP MVC4
    Par napi15 dans le forum ASP.NET MVC
    Réponses: 4
    Dernier message: 11/07/2013, 19h42
  2. probleme dans le select
    Par sallemel dans le forum Struts 1
    Réponses: 3
    Dernier message: 11/03/2009, 14h18
  3. [Debutant] Probleme sur un select
    Par Flamby38 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/01/2008, 15h57
  4. Probleme dans le select
    Par Ora92_IDS dans le forum Oracle
    Réponses: 8
    Dernier message: 29/12/2006, 18h06
  5. Réponses: 8
    Dernier message: 14/11/2005, 12h27

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