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 :

Stocker une sélection et la transformer


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 49
    Par défaut Stocker une sélection et la transformer
    Bonjour,
    j'aimerais créer une macro qui dans un premier temps me permette de stocker un tableau sélectionné en vue de le transformer par la suite; j'ai essayé (naïvement?) avec "selection", mais cela semble automatiquement sélectionner toute la feuille.
    Comment faire? Car je ne veux pas me rabattre sur des dimensions données, car les tableaux varient de taille en fonction des situations.
    SI en plus je pouvais avoir un test pour q'un message apparaisse si rien n'est sélectionné, ce serait super.
    Ce serait déjà un bon début pour mon projet .

    Merci d'avance,
    un galérien du VBA

  2. #2
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Normalement "Selection" correspond bien à la plage de cellules sélectionnées. Pourquoi tu dis qu'il te semble que ça prenne toute la feuille ? Tu fais quoi comme opération après ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 49
    Par défaut
    Bonjour,
    Merci pour la réponse rapide.
    hier j'avais testé sur 2007, ça me sélectionnait toute la feuille (normal?). effectivement, aujourd’hui je n'ai pas ce problème sur 2003.
    par contre c'est pour la vérification de la sélection que je n'arrive pas à régler le "bug":

    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
    Option Explicit 'Oblige à déclarer toutes les variables utilisées
     
    Private Sub CommandButton1_Click()
    Dim tab_1 As Variant 'tab_1 est le tableau de données original
    tab_1 = Selection
     
    If Selection = False Then
    MsgBox "Aucune selection!"
    End If
     
    If Selection <> False Then
    MsgBox "c'est un bon début"
    End If
     
    End Sub
    Et il y a un problème pour le "if selection ..."

    Et tant que j'y suis, l'opération d'après consisterait à rajouter une colonne comportant les moyennes par ligne.

    merci d'avance pour vos réponses

  4. #4
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Selection est un objet Range, on ne peut pas l'assimiler à un Boolean. Après je ne suis pas sûr qu'il soit possible de n'y avoir aucune selection, à moins d'avoir un classeur avec seulement des feuilles protégées avec l'option selection impossible des cellules protégées. Mais tu peux toujours vérifier son existence
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Selection Is Nothing Then ...
    Ou le nombre de lignes (je ne sais pas ce qui se passe dans le cas évoqué plus haut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Selection.Rows.Count = 0 Or Selection.Columns.Count = 0 Then ...
    Pour ce qui est de la moyenne, on pourrait faire la chose suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim i As Integer
    Dim Rg As Range
    For i = 1 To Selection.Rows.Count
        Set Rg = Range(Selection.Cells(i, 1), Selection.Cells(1, Selection.Columns.Count))
        Selection.Cells(i, 1).Offset(0, Selection.Columns.Count).Value = WorksheetFunction.Average(Rg)
    Next i

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 49
    Par défaut
    Encore merci, ça fonctionne presque parfaitement! il y a juste la vérification de la sélection qui ne fonctionne pas, ce qui fait que si je ne sélectionne pas mon tableau de travail, cela m'indique un problème par la suite (il faudrait mettre une msgbox en cas d'oubli de sélection par exemple).

    j'ose continuer d'exposer mon problème: avec cette superbe ligne correspondant aux moyenne, j'aimerais trier le tableau dans l'ordre croissant, et découper la dernière colonne (celle des moyennes) en "x" blocs, x étant donné par l'utilisateur.

  6. #6
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Je crois que je comprends à peu près ce que tu veux. Ce que tu veux c'est que ton tableau soit sélectionné. S'il n'y a qu'un tableau, il vaut mieux travailler sur ce tableau, en faisant par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim monTableau As Range
    Set monTableau = Worksheets("MaFeuille").Range("B5:F45")
    Ensuite tu utilises "monTableau" à la place de "Selection".

    Si tu ne connais pas le nombre de lignes, il faut regarder du coté de la fonction End(xlUp). Tu trouveras pleins d'exemple dans les tutos, la FAQ ou le forum.

    S'il y a plusieurs tableaux et qu'ils peuvent être n'importe où, il faudra vraiment utiliser l'objet Selection comme tu le faisais, mais dans ce cas, les vérifications dépendent du format de ton fichier, de la disposition possible des tableaux... Pars du principe que normalement au moins une cellule est de toute façon selectionnée, ce que tu peux vérifier pour cette cellule ou l'ensemble de cellules c'est la ligne, la colonne, le nombre de lignes, le nombre de colonnes, le contenu...

    Et pour ce que tu as ajouté comme modifications à effectuer, le plus simple serait un fichier exemple avec le tableau initial, le tableau final (avec éventuellement plusieurs cas de paramétrage) et une petite explication.

Discussions similaires

  1. Transformer automatiquement une sélection en image GIF
    Par locweb dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 15/07/2021, 12h12
  2. [XL-2007] Stocker dans une variable une sélection
    Par formabox dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/07/2010, 14h52
  3. [Requête]Stocker dans une nouvelle table une sélection de données
    Par taisherg dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 18/04/2007, 14h58
  4. Fonction de zoom à partir d'une sélection souris
    Par mick74 dans le forum OpenGL
    Réponses: 2
    Dernier message: 13/08/2004, 21h41
  5. [MySQL] Quel est le meilleur moyen de stocker une date/heure ?
    Par MiJack dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 31/07/2004, 12h19

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