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 :

Choisir une feuille précise comme feuille de travail du code vba


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Mai 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Mai 2018
    Messages : 18
    Par défaut Choisir une feuille précise comme feuille de travail du code vba
    Bonjour,

    J'ai un problème très étrange, j'ai deux feuille sur excel: "Panneau" et "journal".
    La première me sert de panneau de contrôle pour ouvrir mes différentes macros à l'aide de boutons, la deuxième me sert de base de donnée pour mon projet.
    J'ai un bouton sur ma feuille panneau qui me sert a ouvrir une macro qui affiche une liste de position de trading non cloturées. Ces positions de trading se situent dans ma feuille "journal".

    En cliquant sur le bouton se situant dans ma feuille "panneau" ma liste n'affiche rien, cependant j'ai créé un bouton qui ouvre la mémé macro dans ma feuille "journal" et il s’avère que celle ci affiche bien ma liste remplie.
    Regardez par vous même avec le fichier joint.

    Je pense donc qu'il s'agit d'un problème de sélection de feuille de travail.

    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
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    Dim actions
    Dim plage1 As Range
     
    Dim position_entry As Double
    Dim position_closed As Double
    Dim position_total As Double
    Dim position_brokage_fees As Double
    Dim position_numbers_of_actions As Integer
     
    Private Sub closed_at_value_Change()
        Call refresh_summary
    End Sub
     
    Private Sub UserForm_initialize()
            'On modifie l'aspect des labels
            position_to_close.Font.Bold = True
            transaction_summary.Font.Bold = True
            transaction_summary.Font.Size = 12
            transaction_summary.Font.Underline = True
            closed_at.Font.Bold = True
            entry.Font.Bold = True
            closed.Font.Bold = True
            total.Font.Bold = True
     
            'on récupére les actions non cloturées
            Set plage1 = Sheets("journal").Range("L2:L" & [A65536].End(xlUp).Row)
     
            i = 0
            For Each Cell In plage1
                If Cell.Value = "false" Then
                'on defini une colonne dan notre listbox
                 position_to_close_list_chooser.ColumnCount = 1
                 'on prépare l'ajout d'un nouvel item
                 position_to_close_list_chooser.AddItem
                 'on ajoute un nouvel item dans la premiére colonne
                 'Cell(1, -1) signifie que l'on récupére le contenu de la 10ieme colonne avant celle sectionné
                 position_to_close_list_chooser.Column(0, i) = Cell(1, -10)
                 i = i + 1
                End If
            Next Cell
    End Sub
    Private Sub position_to_close_list_chooser_Change()
        Call refresh_summary
    End Sub
     
    Private Sub cancel_Click()
        Unload Me
    End Sub
     
    Private Sub refresh_summary()
     
        'On defini notre plage de recherche
        Set plage1 = Sheets("journal").Range("L2:L" & [A65536].End(xlUp).Row)
     
        'on initialise notre variable de boucle
        i = 0
        For Each Cell In plage1
     
        'On verifie si le nom de la cellule selectionnée correspond au nom de l'action selectionnée dans notre liste
        'Offset(0,-11) selectionne la 11ieme colonne avant celle sectionnée
        If Cell.Offset(0, -11).Value = position_to_close_list_chooser.Value Then
     
                position_enter = Cell.Offset(0, -7).Value
     
                'On verifie que c'est bien un nombre
                If IsNumeric(closed_at_value.Value) Then
                    position_closed = CDbl(Replace(closed_at_value.Value, ".", ","))
                Else
                    position_closed = 0
                End If
     
                position_brokage_fees = Cell.Offset(0, -2).Value
                position_numbers_of_actions = Cell.Offset(0, -8).Value
                position_total = ((position_closed - position_enter) * position_numbers_of_actions) - 2 * position_brokage_fees
     
                'On actualise les labels
                closed_value.Caption = position_closed & " €"
                entry_value.Caption = position_enter & " €"
                total_value.Caption = position_total & " €"
     
     
             i = i + 1
            End If
        Next Cell
    End Sub
     
    Private Sub validate_Click()
        'On defini notre plage de recherche
        Set plage1 = Sheets("journal").Range("L2:L" & [A65536].End(xlUp).Row)
     
        'on initialise notre variable de boucle
        i = 0
        For Each Cell In plage1
     
        'On verifie si le nom de la cellule selectionnée correspond au nom de l'action selectionnée dans notre liste
        'Offset(0,-11) selectionne la 11ieme colonne avant celle sectionnée
        If Cell.Offset(0, -11).Value = position_to_close_list_chooser.Value Then
     
             Cell.Offset(0, -1) = position_total
             Cell.Offset(0, -4) = Date
             Cell.Offset(0, -5) = position_closed
             Cell.Value = "true"
     
             Unload UserForm3
     
             i = i + 1
            End If
        Next Cell
    End Sub
    Ma macro doit exécuter la recherche des actions sur la feuille ou l'on a cliquer sur le bouton et non la feuille "journal".
    Comment modifier ce fonctionnement ?
    Merci
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    Bonjour,

    Peu de participants ouvrent les fichiers joints avec macro surtout dès le premier post, copie ton code de préférence les balise code (bouton #) tu auras certainement plus de réponse.


    Je pense donc qu'il s'agit d'un problème de sélection de feuille de travail.
    Sans voir ton code, je suppose que tu n'indique pas devant tes Range la feuille donc vba considère que c'est la feuille active.
    Tu peux ajouter sheets("nom de ta feuille"). devant tout les Range de ton code (ou utiliser un With)
    Autre solution que je ne recommande pas: forcer la sélection de la feuille au début de la macro sheets("nom de ta feuille"). select

  3. #3
    Membre averti
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Mai 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Mai 2018
    Messages : 18
    Par défaut
    Citation Envoyé par halaster08 Voir le message
    Bonjour,

    Peu de participants ouvrent les fichiers joints avec macro surtout dès le premier post, copie ton code de préférence les balise code (bouton #) tu auras certainement plus de réponse.



    Sans voir ton code, je suppose que tu n'indique pas devant tes Range la feuille donc vba considère que c'est la feuille active.
    Tu peux ajouter sheets("nom de ta feuille"). devant tout les Range de ton code (ou utiliser un With)
    Autre solution que je ne recommande pas: forcer la sélection de la feuille au début de la macro sheets("nom de ta feuille"). select
    Merci pour votre réponse !
    J'ai bien mis Sheets("journal") devant mon Range(), le problème ne vient donc pas de la

  4. #4
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    bonsoir
    ajouter with.....end with lors de l'initialisation de ton USF

    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
    Private Sub UserForm_initialize()
            'On modifie l'aspect des labels
            position_to_close.Font.Bold = True
            transaction_summary.Font.Bold = True
            transaction_summary.Font.Size = 12
            transaction_summary.Font.Underline = True
            closed_at.Font.Bold = True
            entry.Font.Bold = True
            closed.Font.Bold = True
            total.Font.Bold = True
     
            'on récupére les actions non cloturées
     
     
            i = 0
            With Sheets("journal")
            .Activate
            Set plage1 = .Range("L2:L" & [A65536].End(xlUp).Row)
            For Each Cell In plage1
                If Cell.Value = "false" Then
                'on defini une colonne dan notre listbox
                 position_to_close_list_chooser.ColumnCount = 1
                 'on prépare l'ajout d'un nouvel item
                 position_to_close_list_chooser.AddItem
                 'on ajoute un nouvel item dans la premiére colonne
                 'Cell(1, -1) signifie que l'on récupére le contenu de la 10ieme colonne avant celle sectionné
                 position_to_close_list_chooser.Column(0, i) = Cell(1, -10)
                 i = i + 1
                End If
            Next Cell
            End With
    End Sub

  5. #5
    Membre averti
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Mai 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Mai 2018
    Messages : 18
    Par défaut
    Citation Envoyé par BENNASR Voir le message
    bonsoir
    ajouter with.....end with lors de l'initialisation de ton USF

    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
    Private Sub UserForm_initialize()
            'On modifie l'aspect des labels
            position_to_close.Font.Bold = True
            transaction_summary.Font.Bold = True
            transaction_summary.Font.Size = 12
            transaction_summary.Font.Underline = True
            closed_at.Font.Bold = True
            entry.Font.Bold = True
            closed.Font.Bold = True
            total.Font.Bold = True
     
            'on récupére les actions non cloturées
     
     
            i = 0
            With Sheets("journal")
            .Activate
            Set plage1 = .Range("L2:L" & [A65536].End(xlUp).Row)
            For Each Cell In plage1
                If Cell.Value = "false" Then
                'on defini une colonne dan notre listbox
                 position_to_close_list_chooser.ColumnCount = 1
                 'on prépare l'ajout d'un nouvel item
                 position_to_close_list_chooser.AddItem
                 'on ajoute un nouvel item dans la premiére colonne
                 'Cell(1, -1) signifie que l'on récupére le contenu de la 10ieme colonne avant celle sectionné
                 position_to_close_list_chooser.Column(0, i) = Cell(1, -10)
                 i = i + 1
                End If
            Next Cell
            End With
    End Sub
    Merci beaucoup ! la solution donné fonctionnne !

Discussions similaires

  1. Réponses: 4
    Dernier message: 10/07/2015, 14h24
  2. [XL-2013] Choisir une destination précise pour une table extraite d'internet?
    Par Dan.exe dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 16/02/2014, 16h32
  3. Ouverture d'Excel et d'une sheet précise
    Par fabibi001 dans le forum VBScript
    Réponses: 4
    Dernier message: 06/02/2010, 19h17
  4. Réponses: 1
    Dernier message: 08/12/2009, 09h24
  5. [VBA Excel] Lien vers une page précise
    Par Viper7 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/06/2006, 21h54

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