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 :

Coder une boucle [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2017
    Messages : 6
    Par défaut Coder une boucle
    Bonjours à toutes et à tous,

    J'ai rencontré une difficulté en créant une macro, ceci parce que je ne comprends pas comment coder une boucle. (j'ai essayé avec "for i = 10 to 9500", mais j'ai surement fais plein de fautes)

    En simple, je cherche à mettre la valeur "0" dans la case d'à coté de celles qui contiennent "Terminer"

    Exemple : A2 = "terminer" alors B2 = "0"

    je pourrais évidemment copier coller ma condition if mais comme j'ai un tableau qui fait plusieurs milliers de lignes je vais perdre beaucoup de temps.

    Voici mon code :

    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
     
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    'Macro -> Si demande temrinée (traitée), alors le nombre de potelets est changé à 0.
     
      Application.EnableEvents = False 'éviter une boucle sans fin
     
     
      'Si demande terminée et classée alors nombre de potelets = 0, ceci pour pouvoir additioner et anticiper les besoins
     
     
    If [E10].Text = "Terminer" Then
     
     [E10].Offset(0, 1) = 0
     
     End If
     
     
    If [E11].Text = "Terminer" Then
     
     [E11].Offset(0, 1) = 0
     
     
    End If
      Application.EnableEvents = True 'éviter une boucle sans fin
     
     
    End Sub
    comment éviter de devoir copier coller et changer les n°de lignes 1000x ?

    Je vous remercie d'avance pour le temps accordé à mon souci.

    Cordialement,

    Lucien

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Lucien1994 Voir le message
    Bonjour,

    L'événement Worksheet_Change n'est pas celui à employer car la boucle va s'exécuter sur toute la colonne à chaque modification d'une cellule. Il vaut mieux utiliser un événement sur clic droit par exemple : Un clic droit sur une cellule dans l'aire prévue met à jour toutes les cellules.


    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
     
    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
     
        'Macro -> Si demande temrinée (traitée), alors le nombre de potelets est changé à 0.
     
     Dim I As Long, DerniereLigne As Long
     
         If Target.Count > 1 Then Exit Sub
     
         DerniereLigne = Cells(Rows.Count, 1).End(xlUp).Row
     
         If Not Intersect(Target, Range("A2:A" & DerniereLigne)) Is Nothing Then
     
            Application.EnableEvents = False
            Application.ScreenUpdating = True
     
            For I = 2 To DerniereLigne
                If Cells(I, 1) = "Terminer" Then Cells(I, 2) = 0
            Next I
     
            Application.ScreenUpdating = True
            Application.EnableEvents = True 'éviter une boucle sans fin
     
            Cancel = True
     
            'MsgBox "Fin de traitement !", vbInformation
     
         End If
     
    End Sub

  3. #3
    Membre du Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2017
    Messages : 6
    Par défaut
    Bonjour Eric,

    Je vous remercie pour votre rapide réponse !

    J’ai toutefois encore une ou deux questions, la macro que vous m’avez proposée, comment l’enclencher ? Dois-je l’affecter à un bouton ? (Quand je clique droit dans ma colonne E ou F rien ne se passe)

    Merci beaucoup pour votre temps,

    Lucien

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Lucien1994 Voir le message
    La macro se met en route su clic droit d'une cellule de l'aire A2:A & X, X étant la dernière ligne non vide. Si la macro doit s'enclencher sur clic droit d'une cellule des colonnes E à F par exemple, il faut modifier cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not Intersect(Target, Range("E2:F" & DerniereLigne)) Is Nothing Then

  5. #5
    Membre du Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2017
    Messages : 6
    Par défaut
    Vraiment gentil et efficace de votre part ! En fait, je testais alors que mon tableau n’était pas remplis....

    Je vous remercie et vous souhaite une belle journée !

    Lucien

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

Discussions similaires

  1. [Python 2.X] Probleme pour coder une boucle pour plan d`experiences
    Par Reezix dans le forum Calcul scientifique
    Réponses: 2
    Dernier message: 03/10/2016, 15h09
  2. [XSLT] Faire une boucle sur une variable [i]
    Par PoT_de_NuTeLLa dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 07/06/2010, 12h45
  3. [VBA-E] Problème pour coder une boucle
    Par lord-asriel dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/03/2007, 10h10
  4. [Vb.net] Indexé un objet crée dans une boucle
    Par picpic dans le forum Windows Forms
    Réponses: 10
    Dernier message: 17/12/2003, 14h37
  5. Pause dans une boucle
    Par HT dans le forum Langage
    Réponses: 4
    Dernier message: 03/06/2003, 08h52

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