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 :

property let / property get.


Sujet :

Macros et VBA Excel

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut property let / property get.
    Je ne comprend pas si j'ai faux dans la formulation pour renvoyer une cellule d'un range, ou si il manque quelque chose a ma configuration, une bibliotheque ou une reference ou je ne sais quoi
    je voudrais boucler sur un range et faire stopper la boucle quand il trouve la premiere cellule vide en colonne A j'ai ce drôle de message
    si quelqu'un à une réponse merci d'avance il bloque sur la ligne test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MsgBox cel.Formula(1)(1, 1)

  2. #2
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 903
    Points
    55 903
    Billets dans le blog
    131
    Par défaut Boucle sur cellules non vides
    Bonjour

    Ton objet Cell est multicellulaire, donc tu ne peux pas y associer une propriété attachée à un objet unicellulaire.

    Je te propose le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        Dim Cellule As Range
        Set Cellule = Range("A1")
        Do While Not IsEmpty(Cellule)
            MsgBox Cellule.Address & " non vide"
            Set Cellule = Cellule(2)
        Loop

    Ok?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    je te remercie pierre pour ta réponse rapide
    pour ce qui est de ta boucle j'y serai arrivé, mais je tenais a prendre en compte le range en entier pour répondre a la question de maestro et mettre cel en range pour le tri. donc en vrai, ce qu'il me faudrais, l'idée de début, c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Range("A1:D1").Select
        Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, ...
    selectionner chaque ligne (range) et en sortir la premiere cellule comme argument
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    cel Select
        Selection.Sort Key1:=premiere cellule de cel, Order1:=xlAscending,..
    mais j'y suis pas arrivé. sniff

  4. #4
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 903
    Points
    55 903
    Billets dans le blog
    131
    Par défaut
    On ne sait pas effectuer de tri sur une ligne avec
    , sinon la solution était toute trouvée
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    si, bien sur, on peut faire du tri par ligne
    ça donne ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     Range("A1:D1").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight, _
            DataOption1:=xlSortNormal

  6. #6
    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 543
    Points
    15 543
    Par défaut
    Tu vois bien que tu n'as besoin de personne Résolu ?

  7. #7
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 903
    Points
    55 903
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par alsimbad Voir le message
    si, bien sur, on peut faire du tri par ligne
    ça donne ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     Range("A1:D1").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight, _
            DataOption1:=xlSortNormal
    Je vais me coucher...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    salut ouskel.
    non, ce n'est pas vraiment résolu puisque ma question n'était pas le tri, mais comment arreter une telle boucle
    do while quoi ?
    puisque je prend un range de 4 cellules, et je descend par range.offset(1)
    mais quelle condition puis je mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Set cel = Range("A1:D1")
     Do While Not IsEmpty(cel) ça ça ne marche pas
    Do While Not IsEmpty(cel.Formula(1)(1, 1)) ça ça ne marche pas non plus
    , j'ai ce fameux message sur property, et pourtant cette valeur figure bien dans la fenetre espion. et donc là, je cale un peu

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 93
    Points : 73
    Points
    73
    Par défaut
    Est ce que ca, ca se rapprocherait de ce que tu recherches?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Sub test()
     
    Set cel = Range("A1:D1")
     
    Do
     
        Tri
        Set cel = cel.Offset(1, 0)
    Loop Until (cel.Row = Range("A65536").End(xlUp).Row)

  10. #10
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    ça ce rapproche ..... pour la boucle. cela donnerais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim cel As Range
     
    Sub Macro2()
     Set cel = Range("A1:D1")
    Do
      cel.Select
      cel.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight, _
            DataOption1:=xlSortNormal
        Set cel = cel.Offset(1, 0)
    Loop Until (cel.Row = Range("A65536").End(xlUp).Row)
    mais il reste a extraire la premiere cellule, ou au moins la reference A1 pour chaque ligne
    non.... c'est bon, j'ai trouvé en le disant
    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
     
    Dim cel As Range
    Dim i As Integer
    Sub Macro2()
     Set cel = Range("A1:D1")
     i = 1
    Do
      cel.Select
      cel.Sort Key1:=Cells(i, 1), Order1:=xlAscending, Header:=xlGuess, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight, _
            DataOption1:=xlSortNormal
        Set cel = cel.Offset(1, 0)
        i = i + 1
    Loop Until (cel.Row = Range("A65536").End(xlUp).Row + 1)
    End Sub
    en fait il manquaitr ce +1 pour arriver a traiter la derniere ligne et transformer le range(A) en cells(i,1)
    merci a tout le monde, quoique ce soit plutôt un merci de maestro que vous devriez avoir si ma solution lui convient

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

Discussions similaires

  1. [AC-2003] Probleme property let et get
    Par maclolo2 dans le forum VBA Access
    Réponses: 16
    Dernier message: 20/08/2012, 20h08
  2. Réponses: 2
    Dernier message: 26/01/2012, 14h53
  3. Property get, property let
    Par Bowen dans le forum WinDev
    Réponses: 3
    Dernier message: 20/11/2007, 11h08
  4. property let pour tableau de double
    Par hector2 dans le forum Général VBA
    Réponses: 5
    Dernier message: 11/10/2007, 10h13
  5. [VB6] utilisation de Property LET / GET pour un tableau
    Par titounne dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 18/10/2004, 22h06

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