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 :

Numéro de ligne d'une cellule [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur Maitrise d'Oeuvre
    Inscrit en
    Septembre 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Maitrise d'Oeuvre
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2021
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Numéro de ligne d'une cellule
    Bonjour,

    J'utilise Excel et notamment VBA dans le but d'automatiser les plannings que je réalise.
    Dans ce but d'automatiser, j'ai un souci :

    Comment peut-on garder en mémoire le numéro de la ligne d'une cellule afin d'utiliser une boucle for ensuite ?

    Je m'explique : si la cellule active est en A3 (donc ligne impair), j'aimerai appliquer une certaine formule.

    Ensuite, quand ma boucle va s'incrémenter et aller en A4 (donc en ligne pair), j'aimerai appliquer une autre formule.

    Ceci sur 200 lignes (mais bien sur il n'y a que deux formules différentes, dépendant du fait d'être sur une ligne pair ou impair).

    J'ai tenté donc une boucle for avec une condition if à l'intérieur mais je n'arrive pas à trouver la formule pour retenir la parité de la ligne.

    Merci d'avance pour vos réponses.

    Cordialement.

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 764
    Points : 28 622
    Points
    28 622
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pour connaître le numéro de ligne d'une cellule, c'est la propriété Row de l'objet Range
    Attention cependant que si l'on référence plusieurs cellules comme par exemple A5:A20 la propriété Row renverra 5
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Candidat au Club
    Homme Profil pro
    Ingénieur Maitrise d'Oeuvre
    Inscrit en
    Septembre 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Maitrise d'Oeuvre
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2021
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,
    Pour connaître le numéro de ligne d'une cellule, c'est la propriété Row de l'objet Range
    Attention cependant que si l'on référence plusieurs cellules comme par exemple A5:A20 la propriété Row renverra 5
    Bonjour,

    Merci pour votre réponse.
    Cependant je cherche à savoir si ce numéro de ligne est pair ou impair.

    Existe-t-il un code pour déterminer directement la parité de la ligne de la cellule ?

    Ou faut-il d'abord que j'utilise votre propriété et ensuite vérifier qu'elle est pair ou impair ?

    Cordialement.

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 764
    Points : 28 622
    Points
    28 622
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Cependant je cherche à savoir si ce numéro de ligne est pair ou impair.
    Cela existe déjà nativement dans excel les fonctions EST.PAIR et EST.IMPAIR renvoie VRAI ou FAUX suivant le cas
    Donc s'il s'agit de savoir si le numéro de ligne de la cellule A5 est pair ou impair, on peut utiliser WorksheetFunction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      Dim fx As WorksheetFunction
      Set fx = Application.WorksheetFunction
      Debug.Print fx.IsEven(Range("A5").Row)
    On peut également utiliser le modulo 2 à l'aide de l'opérateur Mod
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Debug.Print Range("A5").Row Mod 2 = 0
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Candidat au Club
    Homme Profil pro
    Ingénieur Maitrise d'Oeuvre
    Inscrit en
    Septembre 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Maitrise d'Oeuvre
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2021
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    On peut également utiliser le modulo 2 à l'aide de l'opérateur Mod
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Debug.Print Range("A5").Row Mod 2 = 0
    Bonjour,

    J'ai essayé de mettre en place votre ligne de code dans ma macro mais il y a apparemment une erreur de code. Je vous glisse mon code pour que vous compreniez mieux.

    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
    Sub Ligne_Brisée()
    Dim nombretache As Integer
    Dim i As Integer                                                    'Déclaration des variables
     
    Worksheets("Planning de projet").Activate                           'Active la feuille Planning de projet
     
        nombretache = WorksheetFunction.CountA(Range("C3:C100"))        'Compte le nombre de tâche du projet
     
    Worksheets("Données Ligne Brisée").Activate                         'Active la feuille Données Ligne Brisée
     
    'Paliers de la ligne brisée
     
        Range("F3:F200").Activate
     
        For i = 3 To (nombretache * 2) + 2 Step 2                       'Boucle For pour remplissage des données selon le nombre de tâches
     
            If Debug.Print Range(Cells(i, 6)).Row Mod 2 = 0             'Test si la ligne est pair ou impair
     
            Cells(i, 6) = nombretache - i
     
                Else
     
                Cells(i, 6) = nombretache - i - 1
     
            End If
     
        Next
     
     
    'Valeurs de l'axe secondaire pour la ligne brisée
     
        Range("E3:E200").Activate
     
        For i = 3 To (nombretache * 2) + 2
     
            If Debug.Print Range(Cells(i, 5)).Row Mod 2 = 0
     
            Cells(i, 5) = (Cells(i, 6).Value / nombretache) - (7 * (1 / nombretache) / 8)
     
                Else
     
                Cells(i, 5) = (Cells(i, 6).Value / nombretache) - ((1 / nombretache) / 8)
     
            End If
     
        Next
     
    End Sub
    Attention, le code est pas forcément complet, j'y travaille dessus actuellement et s'il y a d'autres erreurs, n'hésitez pas à m'en faire part
    Merci d'avance pour votre réponse.

    Cordialement.

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 764
    Points : 28 622
    Points
    28 622
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Cela m'étonnerait que le code que vous avez publié ne vous renvoie pas un message d'erreur car la ligne 17 où il manque le mot clé Then (je n'ai pas tout lu)
    De plus cette ligne de code se trouve à l'intérieur d'une boucle avec un Step 2. Il est évident que chaque ligne de test renverra la même réponse.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

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

Discussions similaires

  1. [XL-2016] [VBA] Trouver le numéro de la ligne d'une cellule
    Par sn1girlpower dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/07/2018, 11h28
  2. Récupérer un numéro de ligne dans une plage de cellules
    Par clem256 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 30/03/2017, 15h02
  3. Récupérer le numéro de ligne d'une cellule à partir d'une autre
    Par adknou dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 06/06/2014, 15h50
  4. Afficher numéro de ligne dans une cellule
    Par Douzout dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 22/04/2013, 17h52
  5. [JSP] Affichage numéro de ligne d'une exception
    Par PhoneKilleR dans le forum Servlets/JSP
    Réponses: 12
    Dernier message: 23/09/2003, 14h59

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