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 :

Ordre d'exécution du script


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 28
    Points : 22
    Points
    22
    Par défaut Ordre d'exécution du script
    Bonjour le forum,

    Je m'embrouille avec la définition de l'ordre d'exécution du script:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    LastLig = Cells(Rows.Count, 1).End(xlUp).Row
    For i = LastLig To 2 Step -1
    For j = i - 1 To 2 Step -1
    C'est censé fonctionner de bas en haut et en tant que codeur très débutant ça me déstabilise un tant soit peu...

    Voici le script:

    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
    Sub IF_written()
     
        Dim Cell As Range
        Dim LastLig As Long, i As Long, j As Long
     
    LastLig = Cells(Rows.Count, 1).End(xlUp).Row
    For i = LastLig To 2 Step -1
    For j = i - 1 To 2 Step -1
     
        For Each Cell In Range("A1:A" & Range("A65536").End(xlUp).Row)
     
    If Cells(i, 2) = Cells(j, 2) Then
    Cells(i, 7) = "keep"
     
    If Cells(i, 2) <> Cells(j, 2) Then
    Cells(i, 7) = "delete"
     
    End If
    End If
     
    Next
    Next
    Next
     
    End Sub
    J'ai besoin de comprendre le sens de:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    LastLig = Cells(Rows.Count, 1).End(xlUp).Row
    For i = LastLig To 2 Step -1
    For j = i - 1 To 2 Step -1
    Pouvez-vous me traduire cela?

    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LastLig = Cells(Rows.Count, 1).End(xlUp).Row
    Renvoie le numéro de la dernière ligne de la plage (imaginons que le résultat est 100).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For i = LastLig To 2 Step -1
    Exécute une boucle : pour i = 100 jusque 2 (décrémentation de 1 à chaque passage dans la boucle)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For j = i-1 To 2 Step -1
    Même principe que pour la boucle précédente (sauf qu'elle va démarrer à 99).

    Mais finalement, si j'ai bien compris, il devrait suffire de :

    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
    Sub IF_written()
     
        Dim Cell As Range
        Dim LastLig As Long, i As Long
     
    LastLig = Cells(Rows.Count, 1).End(xlUp).Row
    For i = LastLig To 2 Step -1
    'For j = i - 1 To 2 Step -1 (inutile)
        
        'For Each Cell In Range("A1:A" & Range("A65536").End(xlUp).Row) (inutile)
     
    If Cells(i, 2) = Cells(i - 1, 2) Then
    Cells(i, 7) = "keep"
    Else
    Cells(i, 7) = "delete"
     End If
    
    Next
     
    End Sub
    Cela en respectant votre principe, mais j'ai un doute sur l'affectation de "keep" ou "delete", suivant l'égalité constatée ou non.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 28
    Points : 22
    Points
    22
    Par défaut
    Bonjour jacques_jean,

    Merci pour ces explications ainsi que les modifications opérées sur mon script.
    J'avais conscience qu'il était envisageable d'utiliser Else au lieu de redéfinir un IF mais comme je pataugeais avec l'ordre d'éxecution j'avais opté pour une répétition (certe plus lourde mais plus claire pour le débutant que je suis).

    J'ai finalement juste eu besoin d'intervertir les attributions "keep" et "delete" et tout fonctionne parfaitement voici le résultat:

    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
    Sub IF_written()
     
        Dim Cell As Range
        Dim LastLig As Long, i As Long
     
    LastLig = Cells(Rows.Count, 1).End(xlUp).Row
    For i = LastLig To 2 Step -1
     
    If Cells(i, 2) = Cells(i - 1, 2) Then
    Cells(i, 7) = "delete"
    Else
    Cells(i, 7) = "keep"
     End If
     
    Next
     
     
    End Sub

    Encore merci!

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

Discussions similaires

  1. Exécuter des scripts php dans un ordre précis
    Par cebabonet dans le forum Langage
    Réponses: 9
    Dernier message: 18/10/2012, 11h13
  2. [XL-2003] Ordre d'exécution dans un script / msoCotrolEdit
    Par Toto_1 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 21/08/2011, 18h50
  3. [PHP 5.2] Ordre d'exécution de deux scripts
    Par renaud26 dans le forum Langage
    Réponses: 7
    Dernier message: 02/03/2011, 09h35
  4. [OpenLayers - ASP.NET / C#] ordre d'exécution de scripts
    Par slim dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 22/04/2008, 15h08
  5. Exécuter un script SQL
    Par borgfabr dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/03/2004, 08h47

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