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 :

[VBA-E] selection de plusieurs rangés avec des cellules définies


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 160
    Points : 81
    Points
    81
    Par défaut [VBA-E] selection de plusieurs rangés avec des cellules définies
    Bonjour à tous et toutes

    J'ai un petit soucis, je voudrai

    faire une ligne de code du type :

    Feuil1.Range("F16 : I16").Offset(compteur, 0).Select

    Mais à la place des F16 et I16, je voudrais mettre mes cellules que j'ai défini :

    client_ana pour F16
    et
    nombre_de_retour pour I16

    Si ce n'est pas possible peut on récupérer dans une variable pour mettre dans cette expression la position de ces cases...

    Merci pour toutes vos sujestions

  2. #2
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2006
    Messages
    542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 542
    Points : 712
    Points
    712
    Par défaut
    bonjour à tous
    Bonjour noir_desir

    As tu essayé :

    Feuil1.Range("client_ana : nombre_de_retour").Offset(compteur, 0).Select
    Cela devrait fonctionner

    A+

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 160
    Points : 81
    Points
    81
    Par défaut
    Ca marche ... je pensais pas que l'on pouvait les utiliser directement ...
    Sinon on fait comment pour récupérer la localisation d'une cellule

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Regarde dans du coté de Adress

    Starec

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 160
    Points : 81
    Points
    81
    Par défaut
    J'ai un soucis en effet dans l'expression :


    adresse = Feuil1.Range("pourcent_retour").Address
    adresse = adresse - 1


    Range("client_ana : adresse")

    Je n'ai pas le droit de retrancher -1 à adresse (je l'ai déclarer en string ) mais je voudrai pouvoir décrémenter malgrès tous mon adresse de 1

  6. #6
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    ben adresse c'est une combinaison de ligne et colonne ... c'est quoi qui doit être décrémenté... la ligne ou la colonne ...? voir Offset

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 553
    Points : 566
    Points
    566
    Par défaut
    et puis comment veut tu soustraire un umérique à du string
    c'est comme si tu faisais maison - 1, le cerveau humain ne sait aps faire, la machnie non plus

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 160
    Points : 81
    Points
    81
    Par défaut
    J'ai essayé l'offset mais il n'accepte pas la commande :

    Feuil1.Range("client_ana : pourcent_retour.offset(-1,0)").select

    Mais cette commande ne semble pas fonctionner (j'ai un message erreur d'exécution 1004)
    Sinon moi je veux descendre d'une ligne et rester sur la même colonne

  9. #9
    Invité
    Invité(e)
    Par défaut
    Re

    As-tu regardé la sytaxe d'Offset dans l'aide ?

    Starec

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 160
    Points : 81
    Points
    81
    Par défaut
    Dans l'aide sur offset il y a ecrit :

    expression.Offset(RowOffset, ColumnOffset)

    C'est donc bien la bonne commande mais on ne doit pas pouvoir le mettre à l'intérieur d'un range ...c'est pour cela que je voulais essayer de prendre l'adresse de ma case pourcent_retour et la décrémenter de 1. Pour ensuite la remettre dans range

  11. #11
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2006
    Messages
    542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 542
    Points : 712
    Points
    712
    Par défaut
    Bonsoir à tous
    Bonsoir noir_desir

    Quand tu écris :
    " Mais à la place des F16 et I16, je voudrais mettre mes cellules que j'ai défini :"
    et :
    " ..Sinon moi je veux descendre d'une ligne et rester sur la même colonne"
    et aussi :
    " .... et la décrémenter de 1"

    J'ai l'impression que tu te croises les neuronnes.

    Que veux tu exactement ?

    Quelle est la manip pour récupérer ta "ligne" ou "colonne" ou "cellules" ?

    Explique nous ton vrai problème, et après on pourras te dire

    A+

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 160
    Points : 81
    Points
    81
    Par défaut
    ok.

    En faites je veux trier des données d'un tableau

    -J'ai prévu de mettre une ligne en fin de tableau qui me permettrait de savoir ou le tableau finira (cette ligne est désigné par "pourcent_retour" ) par le biais de se code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Feuil1.Range("client_ana : retour_ana").Offset(compteur + 1, 0).Select
        Selection.Insert Shift:=xlDown
    Pour trier, j'ai utilisé cette structure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Range("client_ana:I16").Select
        Selection.Sort Key1:=Feuil1.Range("nombre_envoi").Offset(compteur + 1, 0), Order1:=xlDescending, Header:=xlNo, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
    Ici "client_ana" est la ligne ou son répertorié mes entêtes de colonne et I16 correspond à la fin de tableau provisoire.

    Ce tableau change en grandeur au fur et à mesure de l'année, donc je ne peux m'arrêter donc pas juste m'arrêter à "I16".

    Pour cela je souhaite remplacer le "I16" par la ligne se trouvant juste au dessus de poucent_recu.

    Je joins mon fichier en annexe.
    Fichiers attachés Fichiers attachés

  13. #13
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Tu as quelque chose sous ton tableau ( en dessous de "pourcent_retour") ?
    Si tu n'as rien, tu as 4 formules pour connaître la dernière ligne renseignée dont celle-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DerniereLigne = Range("I1").SpecialCells(xlCellTypeLastCell).Row
    Si tu as des lignes renseignées en dessus et en dessous de ton tableau mais séparées de celui-ci par des lignes vides, tu peux utiliser CurrentRegion pour sélectionner et trier ton tableau
    Précise ton pb et la structure de tes données (un seul tableau, plusieurs, séparations, position de la première ligne...)

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 160
    Points : 81
    Points
    81
    Par défaut
    Je n'ai rien en dessous de des cases qui sont mes cases récapitulative de mon tableau

    TOTAL; total_envoi; pourcent_retour

    Par contre, j'avoue ne pas tous comprendre au remarque que tu me proposes

    Mon tableau commence par (j'ai mis le nom des cases définit):

    client_ana, nombre_d_envoi, nombre_de_retour, retour_ana

    La localisation précise de ces cases changes à priori à chaque utilisation, puisque elle se trouve au dessous des informations que je cherche à analyser (comme dans le fichier que j'ai joint).


    1. Je met en mémoire le premier client de la liste.
    2. je rajoute une ligne
    3. Je vérifie ma liste jusqu'au dernier , pour savoir s'il apparait plusieurs fois au quel cas j'incrémente de 1 le nombre d'envoi
    4. Je trie par le nombre d'envoi
    5. Je sélectionne le client N+1 en mémoire
    6. Je retire les noms qui apparaisse plus d'une fois (étape nécessaire dû à ma façon de construire le tableau récapitulatif des points 1,2,3,4)
    7. Je finis ma macro à cette étape


    Le problème se situe donc au niveau du trie, car je ne sais pas prendre la localisation de ma dernière ligne (qui est l'avant dernière ligne de mon tableau récapitulatif).

  15. #15
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Si ce n'est qu'un pb de dernière ligne, la ligne que je t'ai données te fournit son N°. Pour avoir l'avant dernière, tu fais -1
    Je regarde ton fichier.

    Edit
    Désolé mais j'ai assez de b....l sur mon micro pour ne pas en ajouter et quand j'ai ouvert ton dossier j'ai pris peur. Si tu pouvais simplement nous mettre la feuille concernée et nous montrer simplement ce qui change et que tu veux trier.

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 160
    Points : 81
    Points
    81
    Par défaut
    Ok pas de problème (et je vous remercie du temps que vous prenez à m'aider )

    en blanc le tableau ou se trouve les données
    en bleu mes colonnes de tableau
    en vert les colonnes à trier (ici elle ne sont pas trier )
    le bouton analyse qui lance la lecture du fichier

    en jaune n'est pas en prendre en compte ...

    Par contre je l'ai mis en rar car hier j'ai eu des soucis pour le mettre directement en piecejointe
    Fichiers attachés Fichiers attachés

  17. #17
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    J'ai testé en mettant cette macro dans un module standard en supposant que tu n'avais pas de ligne entièrement vide dans ta plage de données (partie verte)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub test()
    Dim Plage, F As Worksheet, Adresses, PlageAtrier
    Dim DernièreLigne As Long, DernièreColonne As Integer
        Set F = Worksheets("Feuil1")
        Plage = F.Range("client_ana").CurrentRegion.Address 'F1 sur CurrentRegion
        Adresses = Split(Plage, ":") 'F1 sur Split
        DernièreLigne = F.Range(Adresses(1)).Row - 1
        DernièreColonne = F.Range(Adresses(1)).Column
        PlageAtrier = Adresses(0) & ":" & F.Cells(DernièreLigne, DernièreColonne).Address
        F.Range(PlageAtrier).Sort Key1:=Range(Adresses(0)), Order1:=xlDescending, Header:=xlYes _
                , OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
                DataOption1:=xlSortNormal
        Set F = Nothing
    End Sub
    Tu dis

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 160
    Points : 81
    Points
    81
    Par défaut
    C'est exactement ce que je voulais
    Merci beaucoup à tous le monde

    (Il pourrait être intéressant de rajouter cette partie de code dans l'aide du forum ?)

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

Discussions similaires

  1. [VBA-E]filtre sur plusieurs Critères avec Excel
    Par Diablo_22 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/05/2006, 20h34
  2. Réponses: 2
    Dernier message: 12/05/2006, 23h59
  3. [VBA-E]selection de plusieurs cellules
    Par SekanS dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 22/03/2006, 18h28
  4. selection de plusieurs dates avec un calandrier
    Par matdesign dans le forum Access
    Réponses: 5
    Dernier message: 01/10/2005, 08h21
  5. Changer plusieur style avec des IDs différents?
    Par YanK dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/07/2005, 14h33

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