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 :

Bug sur For each avec une Range() [XL-2016]


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 Bug sur For each avec une Range()
    Salut à tous,

    J'ai une plage de donnée plage1 qui regroupe toutes les cellules de M2 à M65536. Sur celle ci j'effectue un test sur le contenue de la cellule pour voir si il est égale a "true" ou "false".
    Ensuite en fonction du résultat j'effectue une opération quelconque.

    Sans que le formulaire d'affichage soit fermé, les donnés de ma plage sont modifié, une valeur passe de "true" a "false".
    Toujours sans fermer mon formulaire, je réitère sur ma plage de donné une For Each mais je remarque que les données séléctionnées par celle-ci sont mainteant de M1 à M2 or je ne l'ai jamais modifier !

    Une idée ?

    Merci !

    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
    Set plage1 = Sheets("journal").Range("M2:M" & [A65536].End(xlUp).Row)
     
            Number_risky = 0
            top_risky = 5
            For Each Cell In plage1
     
                MsgBox Cell.Value
     
                If Cell.Value = "false" Then
     
                    'On créé les éléments
                    Set action_name_frame = risked_position_frame.Controls.Add("Forms.Label.1", "ok" & Number_risky, True)
                    Set action_ticker_isin_frame = risked_position_frame.Controls.Add("Forms.Label.1", "ok" & Number_risky, True)
                    Set action_numbers_frame = risked_position_frame.Controls.Add("Forms.Label.1", "ok" & Number_risky, True)
                    Set action_entry_date_frame = risked_position_frame.Controls.Add("Forms.Label.1", "ok" & Number_risky, True)
                    Set action_buying_price_frame = risked_position_frame.Controls.Add("Forms.Label.1", "ok" & Number_risky, True)
                    Set action_total_investing_frame = risked_position_frame.Controls.Add("Forms.Label.1", "ok" & Number_risky, True)
     
                    'on positionne les éléments créés
                    action_name_frame.Caption = Cell.Offset(0, -12).Value
                    action_name_frame.top = top_risky
                    action_name_frame.Left = 20
                    action_name_frame.Width = 100
     
                    action_ticker_isin_frame.Caption = Cell.Offset(0, -11).Value
                    action_ticker_isin_frame.top = top_risky
                    action_ticker_isin_frame.Left = 162
     
                    action_numbers_frame.Caption = Cell.Offset(0, -9).Value
                    action_numbers_frame.top = top_risky
                    action_numbers_frame.Left = 256
     
                    action_entry_date_frame.Caption = Cell.Offset(0, -7).Value
                    action_entry_date_frame.top = top_risky
                    action_entry_date_frame.Left = 354
     
                    action_buying_price_frame.Caption = Cell.Offset(0, -8).Value & "€"
                    action_buying_price_frame.top = top_risky
                    action_buying_price_frame.Left = 456
     
                    action_total_investing_frame.Caption = Cell.Offset(0, -9).Value * Cell.Offset(0, -8).Value & "€"
                    action_total_investing_frame.top = top_risky
                    action_total_investing_frame.Left = 558
     
                    top_risky = top_risky + 19
                    Number_risky = Number_risky + 1
     
                End If
            Next Cell
     
            number_of_risked_position_frame.Caption = "Trade(s) à risque: " & Number_risky & "/7"

  2. #2
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Salut

    [A65536].End(xlUp).Row te retourne la dernière ligne saisie en colonne A. Si cette ligne est 1, ton Range devient M2:M1.

    En colonne A???

  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
    Voila ma feuille:
    Nom : ok.png
Affichages : 237
Taille : 26,7 Ko

  4. #4
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set plage1 = Sheets("journal").Range("M2:M" & Sheets("journal").Range("A65536").End(xlUp).Row)

  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
    Cela fonctionne parfaitement ! Est-ce que je peu avoir des explications quant a son fonctionnement ?

  6. #6
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Je te ferai un topo demain à ce sujet.
    En attendant, ferme cette discussion en cliquant sur "résolu".
    Bonne soirée

  7. #7
    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 pijaku Voir le message
    Salut

    [A65536].End(xlUp).Row te retourne la dernière ligne saisie en colonne A. Si cette ligne est 1, ton Range devient M2:M1.
    Merci beaucoup pour votre réponse, cependant mes cellules sont remplis jusqu’à la ligne 10 ...

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/11/2016, 19h10
  2. [XSLT] XSLT sort dans un for-each avec select sur un param
    Par tralloc dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 23/11/2012, 09h06
  3. For-each avec une variable en php
    Par Aurel06 dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 03/08/2009, 12h52
  4. xsl:for-each avec un parametre pour select
    Par arnog dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 26/08/2008, 13h09
  5. Réponses: 6
    Dernier message: 26/11/2007, 15h25

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