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] Convertir une chaine en Range pour une sélection de colonnes [Toutes versions]


Sujet :

Macros et VBA Excel

  1. #21
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    je t'avouerais que la je sèche
    Va faloir attendre que quelqu'un de grand beau et fort (ca marche aussi au féminin mais vaut mieu adapter les adjectifs) passe par ici

    Juste une question ta macro est dans un module standard? dans le code d'une feuille, d'un userform?
    J'ai eu quelque souci de range a cause de ca mais ca m'étonnerai que ce soit le cas ici

  2. #22
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 25
    Points : 9
    Points
    9
    Par défaut
    ma macro est dans un module standard. Rien de plus standard même !!!
    j'attends avec impatience Zorro (ou Dora pour les filles) pour son aide ^^

    Je vais ajouter un petit truc. J'ai essayé de créer une petite macro qui sélectionne plusieurs colonnes du classeur ouvert et là pas de problème.
    Par contre dans la macro que je développe en ce moment, j'ouvre une autre fenêtre excel et je fais les traitements dedans et dans cette fenêtre, je n'arrive pas à effectuer la sélection alors je trouve ça un peu louche. Je vous mets une petite portion de code de ma macro des fois que ...

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
    Dim chemin As String ' chemin du fichier
    Dim nomfichier As String ' nom du fichier
    Dim xl As Excel.Application ' application excel
    Dim xlsClass As Excel.Workbook ' classeur excel
    Dim xlsFeuille As Excel.Worksheet ' feuille excel
     
    Dim colonne As Integer
     
    Sub TraiterDonnees_Clic() 
       ' ouverture du fichier de mesures
        Set xl = CreateObject("Excel.Application")
     
        On Error Resume Next
            chemin = xl.GetOpenFilename
            xl.Workbooks.OpenText (chemin)
     
            ' récupération du nom du fichier
            Dim TabSplit() As String
            TabSplit = Split(chemin, "\")
            nomfichier = TabSplit(UBound(TabSplit))
     
            'affichage du résultat
            xl.Visible = True
     
            ' dépouillement d'un essai puissance
            Call depouille_un_essai_puissance
     
        On Error GoTo 0
     
    End Sub
     
    Private Sub depouille_un_essai_puissance()
        Call Depouillement
        Call SousEchantillonnage
        Call miseenforme
     
        For n = 4 To colonne
            Call graphique(n)
        Next n
    End Sub
     
    Private Sub graphique(ByVal numCol As Integer)
    '
        With xl
     
            Dim maSelection As String
             maSelection = "C:C," & Chr(Asc("A") + (numCol - 1)) & ":" & Chr(Asc("A") + (numCol - 1))
             duree = 1.2 * .Cells(4, 4).Value
             titre = .ActiveSheet.Name
             .Range(maSelection).Select
             '.Columns(selection).Select
             .Charts.Add
             .ActiveChart.ChartType = xlXYScatterSmooth
            .ActiveChart.SetSourceData Source:=.Sheets(titre).Range(maSelection), PlotBy:=xlColumns
             .ActiveChart.Location Where:=xlLocationAsObject, Name:=titre
             With .ActiveChart
                 .HasTitle = True
                 .ChartTitle.Characters.Text = titre
                 .Axes(xlCategory, xlPrimary).HasTitle = True
                 .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Temps(S)"
                 .Axes(xlValue, xlPrimary).HasTitle = True
                 .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Puissance kW)"
             End With
        End With
    End Sub

  3. #23
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Une parenthèse en trop ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .ActiveChart.SetSourceData Source:=.Sheets("feuil2").Range("C:C," & Chr(Asc("A") + (numCol - 1)) & ":" & Chr(Asc("A") + (numCol - 1))), PlotBy:=xlColumns

  4. #24
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 25
    Points : 9
    Points
    9
    Par défaut
    non celle-ci ferme le range donc aucun soucis

  5. #25
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Ce code fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub y()
    numcol = 4
    Dim MaSelect As String
    ''selection = "C:C," & Chr(Asc("A") + (numcol - 1)) & ":" & Chr(Asc("A") + (numcol - 1))    ' la chaîne contient bien un des exemples ci-dessus
    MaSelect = "C:" & Chr(Asc("A") + (numcol - 1))
    Columns(MaSelect).Select ' sélection des colonnes déterminer par la chaîne ci dessus
     
    End Sub

  6. #26
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 25
    Points : 9
    Points
    9
    Par défaut
    Sauf que ton code, si tu as maSelect = "C:G", tu sélectionnes les colonnes de C à G et donc tu as plusieurs courbes sur le meme graphique ce que je ne souhaite pas. Merci tout de même

  7. #27
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Je ne comprend plus, que veux tu obtenir ?
    Tu as toujours la colonne C et une autre colonne avec le numéro a définir ?

    Si c'est ça essaie ça pour voir :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub k()
    Dim Numcol As Integer
    Numcol = 5
    Dim Maplage As Range
     Set Maplage = Union(Columns(3), Columns(Numcol))
    Maplage.Select
     
    End Sub

  8. #28
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 25
    Points : 9
    Points
    9
    Par défaut
    Je ne comprend plus, que veux tu obtenir ?
    Tu as toujours la colonne C et une autre colonne avec le numéro a définir ?
    Je veux obtenir un graphique contenant une courbe de chaque mesure contenue dans mon fichier texte (courbe en fonction du temps).
    Dans mes courbes, la colonne C est toujours sélectionnée et l'autre est soit la D, la E, ... (selon le nombre de mesures).

    Je récapitule mon projet et les étapes successives à faire :
    - j'ouvre un fichier .xls qui contient ma macro et un bouton
    - Au clic sur le bouton, ma macro s'exécute et demande un fichier à analyser
    - le fichier choisi, une autre fenêtre excel s'ouvre avec les données
    - Il s'en suit toute une série de traitement (échantillonnage, ajout de colonnes, mise en forme, ...)
    - le dernier traitement est l'édition des graphiques (une courbe par graphique) ==> A partir de cette étape, je rencontre un problème de sélection de colonnes.

    Diverses solutions testées :
    - J'ai regardé le code créé par l'éditeur de macros et adapter à mon cas ==> code erreur sur la sélection des plages
    - Essayer en utilisant une sélection par défaut, par exemple sélection des colonnes C et D soit C en excel et là : OK
    - Essayer en utilisant une sélection par défaut, par exemple sélection des colonnes C et D soit C:C,D en excel et là : Ne fonctionne pas, pourtant l'enregistreur de macro préconise cette solution

    Alors je cherche pourquoi ça ne veut pas alors que dans un cas, cela fonctionne !

    Ajout de pièces jointes ! ça sera peut-être plus parlant !

    Méthode :
    - ouvrir la macro .Xls
    - cliquer sur le bouton pour la lancer
    - sélectionner le fichier de test et regarder le résultat
    Fichiers attachés Fichiers attachés

  9. #29
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Bonjour,

    As-tu essayé le code que je t'ai donné le 09/04/2009, 17h40 là tu as bien une selection de tes 2 colonnes

  10. #30
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 25
    Points : 9
    Points
    9
    Par défaut
    oui j'ai essayé et j'ai une erreur sur :
    Set Maplage = Union(Columns(3), Columns(Numcol))
    Il n'en veut pas !

  11. #31
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Si Numcol est > zero ça devrait pourtant fonctionner

  12. #32
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 25
    Points : 9
    Points
    9
    Par défaut
    le problème doit venir que je traite sur une autre fenêtre excel mais j'arrive pas à déceler l'erreur si tu peux regarder avec les pièces jointes précédemment tu verrais le problème dans la dernière fonction

  13. #33
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 25
    Points : 9
    Points
    9
    Par défaut
    Merci à tous mon problème est totalement résolu, la solution de aalex_38 était la bonne.

    A une prochaine chers développeurs !!!

  14. #34
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Je viens de tester et de corriger l'erreur dans le code, et je reviens sur le forum et résolu


    A une prochaine

  15. #35
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 25
    Points : 9
    Points
    9
    Par défaut
    Ouais j'ai vu mon erreur aussi !
    Flagrante ^^
    Merci tout de même

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 6
    Dernier message: 05/08/2013, 21h57
  2. Réponses: 3
    Dernier message: 22/08/2010, 17h40
  3. erreur pour une insertion d'une chaine de caractere dans une cellule
    Par amel95140 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/10/2006, 09h09
  4. Et pour une chaine ?
    Par mick030118 dans le forum C
    Réponses: 7
    Dernier message: 12/03/2006, 11h19
  5. result: chaine de caractère pour une DLL
    Par Sephiroth Lune dans le forum Langage
    Réponses: 7
    Dernier message: 27/07/2004, 23h05

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