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] Macro utilisant la sélection active


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 6
    Par défaut [VBA-E] Macro utilisant la sélection active
    Bonjour à tous,

    J'ai écrit une macro qui marche très bien mais je voudrais la rouler pour chaque cellule que je sélectionne ! Actuellement elle roule pour l'active cell seulement.

    Je voudrais une boucle for qui utilise la sélection active pas une sélection déterminé. Exemple non fonctionnel :

    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
    Dim plage As Range
          
    Set plage = "SelectionActive"
    For Each cell In plage
      J'insèrerais ma macro ici
    Next cell
    
    Marcro fonctionnelle 
    Dim Valeur As Single
        ActiveCell.Replace What:=".", Replacement:="", LookAt:=xlPart, SearchOrder:= _
            xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
        Selection.NumberFormat = "0.00"
        Valeur = ActiveCell.Value
        Valeur = (Valeur / 1073741824)
        ActiveCell.Value = Valeur
            With Selection.Font
            .Name = "Arial"
            .Size = 10
            .Strikethrough = False
            .Superscript = False
            .Subscript = False
            .OutlineFont = False
            .Shadow = False
            .Underline = xlUnderlineStyleNone
            .ColorIndex = xlAutomatic
        End With
        ActiveCell.Offset(1, 0).Select ' Je n'aurais alors pas besoin de ce champ
    End Sub
    Merci d'avance

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonsoir

    Si j'ai bien compris, tu pourrais utiliser l'évènement SelectionChange

    http://silkyroad.developpez.com/VBA/...Feuille/#LII-I



    michel

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 6
    Par défaut
    C'est une piste mais ce n'est pas exactement ce que je voulais

    Je ne veux pas que la macro s'exécute automatiquement lorque je fait une sélection...

    1- J'effectue une sélection donné exemple (A1 à A10)
    2- Je veux que l'orque je roule ma macro elle effectue le travail pour les cellules A1 A2 A3 A4...A10 et qu'elle s'arrête

    3- J'effectue alors une autre sélection exemple (A14 à A23)
    4- Je veux alors qu'elle fasse encore la même chose mais pour cette nouvelle sélection A14 A15... A13 et qu'elle s'arrête

    Je cherche un élément de excel qui peux me donné le range de la sélection actuelle

    J'espère que c'est plus clair, merci pour le lien ca m'a quand même donné une idée

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    A mon avis essaie tout betement de remplacer active cell par selection
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    selection.Replace What:=".", Replacement:="", LookAt:=xlPart, SearchOrder:= _
            xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    c'est le code que donne un enregistrement de macro si tu la fais directement avec une selection multiple

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 6
    Par défaut
    J'ai trouver quelque chose qui semble fonctionner

    1- J'ai créer une variable publique au niveau de la feuille
    2- Ensuite dans "sélection change" je fais mettre le range dans ma var
    3- Ensuite je met ma macro au niveau de la feuille aussi en utilisant ma var publique

    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
     
    Public RangePub As Range
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       Set RangePub = Target
    End Sub
     
    Sub Remplacer()
    Dim plage As Range
    Dim Valeur As Single
     
    Set plage = RangePub
    For Each cell In plage
        ActiveCell.Replace What:=".", Replacement:="", LookAt:=xlPart, SearchOrder:= _
            xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
        Selection.NumberFormat = "0.00"
        Valeur = ActiveCell.Value
        Valeur = (Valeur / 1073741824)
        ActiveCell.Value = Valeur
            With Selection.Font
            .Name = "Arial"
            .Size = 10
            .Strikethrough = False
            .Superscript = False
            .Subscript = False
            .OutlineFont = False
            .Shadow = False
            .Underline = xlUnderlineStyleNone
            .ColorIndex = xlAutomatic
        End With
        ActiveCell.Offset(1, 0).Select
    Next cell
    End Sub
    Ca marche jusqu'à présent

    Pourrais-je rendre cette opération plus simple ?

  6. #6
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 6
    Par défaut
    Citation Envoyé par alsimbad
    A mon avis essaie tout betement de remplacer active cell par selection
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    selection.Replace What:=".", Replacement:="", LookAt:=xlPart, SearchOrder:= _
            xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    c'est le code que donne un enregistrement de macro si tu la fais directement avec une selection multiple

    Tu as bien raison effectivement exel génère ce code pour un rechercher remplacer avec une sélection ...

    Mais comment pourrais-je diviser chacune de mes valeurs et changer le font dans la même opération ?

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    bon, je suis gentil
    en fait je me suis rendu compte qu'effectivement ça ne sautait pas aux yeux le comment
    voila un code qui marche, j'ai testé
    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
     Sub essai()
       u = Selection.Address
       For Each cel In Range(u)
       cel.Replace What:=".", Replacement:="", LookAt:=xlPart, SearchOrder:= _
            xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
        cel.NumberFormat = "0.00"
        cel.Value = cel / 2
            With Selection.Font
            .Name = "Arial"
            .Size = 10
            .Strikethrough = False
            .Superscript = False
            .Subscript = False
            .OutlineFont = False
            .Shadow = False
            .Underline = xlUnderlineStyleNone
            .ColorIndex = xlAutomatic
        End With
        Next cel
    End Sub
    voila voila

  8. #8
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 6
    Par défaut
    Effectivement c'est une équivalence optimisé ! Merci pour ton aide

    Maintenant question suprème :-)

    Pensez vous que je pourrais trouver un bout de code qui va chercher la valeur sur un site web avant d'effectuer cette macro ? (Une importation de donnée à partir d'un site web)

    Je suis persuader que la j'en demande trop mais qui ne demande rien n'a rien.

    J'ai un programme qui compile des données et qui les stoque sous la forme suivante 999.999.999. dans un tableau sur le web.

    Il insère un point a chaque milier c'est le pourquoi de mon recherche "." remplace par ""

    En ce moment je fais du copier coller !

  9. #9
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    personelement, là, je peux rien pour toi. les interactions de excel avec les applications exteriures, c'est du chinois pour moi. va falloir faire appel aux grands maîtres.

  10. #10
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 6
    Par défaut
    Bien sais tu que j'ai trouvé un article intéressant sur
    http://webdesign.about.com/od/tables/a/aa071502a.htm

    Menu donnée --> Données externe --> nouvelle requêtes sur le web

    J'ai sélectionner le tableau en question et j'ai importé les données dans excel !

    C'est plutôt un bon départ

    Mon tableau est classé par date probablement que je suis en mesure de valider celle ci une fois importé ...

    Mais il ne faut pas trop s'emballer !!

  11. #11
    Expert éminent


    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
    Par défaut
    Citation Envoyé par vectorw16
    Bonjour à tous,

    J'ai écrit une macro qui marche très bien mais je voudrais la rouler pour chaque cellule que je sélectionne ! Actuellement elle roule pour l'active cell seulement.

    Je voudrais une boucle for qui utilise la sélection active pas une sélection déterminé. Exemple non fonctionnel :


    Comment ajouter une commande au menu contextuel d'une cellule Excel ?

Discussions similaires

  1. [XL-2007] Macro VBA s'arrête sur une sélection
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/09/2010, 14h34
  2. VBA Macro utilisable dans un dossier ciblé / Bouton personnalisé
    Par pythagore3_14 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 31/07/2008, 08h35
  3. Réponses: 6
    Dernier message: 23/08/2007, 09h49
  4. Utilisation de VBA et macros WORD/EXCEL
    Par baptx dans le forum VBA Word
    Réponses: 1
    Dernier message: 17/07/2007, 13h27
  5. [VBA-E] Macro ouverture fichier déja ouvert
    Par bhaal76 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/12/2002, 14h30

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