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 :

Question sur fonction Range - ActiveCell.FormulaR1C1


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Avril 2020
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable de compte

    Informations forums :
    Inscription : Avril 2020
    Messages : 10
    Par défaut Question sur fonction Range - ActiveCell.FormulaR1C1
    Bonjour,

    Je débute dans le VBA, et je ne comprends pas cette partie de 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
     Range("N" & i).Select
        ActiveCell.FormulaR1C1 = _
            "=VLOOKUP(RC[-2],'base de donnée'!R2C2:R911C9,4,FALSE)"
     
        Range("O" & i).Select
        ActiveCell.FormulaR1C1 = _
            "=VLOOKUP(RC[-3],'base de donnée'!R2C2:R911C9,5,FALSE)"
     
        Range("P" & i).Select
        ActiveCell.FormulaR1C1 = _
            "=VLOOKUP(RC[-4],'base de donnée'!R2C2:R911C9,6,FALSE)*RC[1]"
     
        Range("R" & i).Select
        ActiveCell.FormulaR1C1 = "=RC[-1]*RC[-3]"
    A quoi correspondent les lettres "N", "O", "P" et "R" dans la fonction Range ?
    Il s'agit de colonne ou d'une variable ?

    Dans la fonction Formula R1C1, en cherchant dans les sujet existant, j'ai vu que RC(-1) correspond à la colonne à gauche de la cellule active. Mais où est indiquée la cellule active ?

    Merci.

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Olivier2610 Voir le message
    A quoi correspondent les lettres "N", "O", "P" et "R" dans la fonction Range ?
    Il s'agit de colonne ou d'une variable ?
    Quand il y a des guillemets, il s'agit de chaines de caractères, pas de variables.
    Ici, ces chaines de caractère représentent des noms classiques de colonnes.

    Dans la fonction Formula R1C1, en cherchant dans les sujet existant, j'ai vu que RC(-1) correspond à la colonne à gauche de la cellule active. Mais où est indiquée la cellule active ?
    La cellule active est celle où se trouve la fonction.
    Ici, il s'agit du Range auquel est affecté le FormulaR1C1.

    La notation R1C1 (L1C1 en français) est une ancienne notation d'Excel tombée en désuétude depuis que les colonnes sont désignées par des lettres.
    R = Row (ligne)
    C = Column (colonne).

    S'il n'y pas pas de nombre après, c'est qu'il s'agit de la ligne ou colonne de la cellule.
    S'il y a une nombre entre parenthèse, c'est qu'il s'agit d'une valeur relative en nombre de lignes ou de cellules par rapport à la cellule de la formule (l'équivalent des formules A1 sans $).
    S'il y a un nombre sans parenthèses, c'est d'une référence absolue (l'équivalent des $ pour la notation A1).

    Si cette façon de désigner les cellules ne te convient pas, il suffit que tu utilises Formula au lieu de FormulaR1C1, et tu pourras utiliser des formule avec les références actuelles de cellules.

    Petit détail au passage : les Select et ActiveCells ne servent à rien.
    C'est d'ailleurs une utilisation impropre puisque ActiveCells est la cellule désignée par un Activate et non un Select.
    La cellule désignée par un Select est Selection.
    Mais dans la plupart des cas (pas tous), ça fonctionne quand même.
    Même si c'est inutile.

    Bref :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Range("N" & i).Formula = "=VLOOKUP(L" & i & ",'base de donnée'!B2:I911,4,FALSE)"
    Range("O" & i).Formula = "=VLOOKUP(L" & i & ",'base de donnée'!B2:I911,5,FALSE)"
    Range("P" & i).Formula = "=VLOOKUP(L" & i & ",'base de donnée'!B2:I911,6,FALSE)*Q" & i
    Range("R" & i).Formula = "=Q" & i & "*O" & i

  3. #3
    Membre habitué
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Avril 2020
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable de compte

    Informations forums :
    Inscription : Avril 2020
    Messages : 10
    Par défaut
    Merci Menhir pour cette réponse complète.

    En fait c'est un code dans un fichier d'un collègue que j'essaye de comprendre.

    Ce qui me pose problème c'est ce : ("N" & i) ou ("O" & i).
    Je ne comprends pas dans quelle cellule ça renvoie, car si j'ai bien compris il s'agit des colonne N ou O ou P..., (il n'y a rien dans ces colonnes dans la feuille active), et qui signifie le "& i"

    La variable i étant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim i As Byte
    For i = 1 To ListBox1.ListCount
    Merci.

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Olivier2610 Voir le message
    Ce qui me pose problème c'est ce : ("N" & i) ou ("O" & i).
    Je ne comprends pas dans quelle cellule ça renvoie, car si j'ai bien compris il s'agit des colonne N ou O ou P..., (il n'y a rien dans ces colonnes dans la feuille active), et qui signifie le "& i"
    "i" est une variable qui permet de définir le numéro de ligne de la cellule.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim i As Byte
    For i = 1 To ListBox1.ListCount
    Déjà, définir un numéro de ligne en tant que Byte, c'est vraiment une mauvaise idée : quand on remplit une piscine olympique, on ne compte pas les goutes. De même, quand on dispose d'une mémoire qui se compte en Go, économiser trois octets au risque de se retrouver avec un bug de dépassement, c'est ridicule.
    Commence par changer ce Byte en Long.

    Pour ce qui est de ton problème, cette ligne signifie que "i" varie de 1 jusqu'au nombre de ligne de la ListBox1.

  5. #5
    Membre habitué
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Avril 2020
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable de compte

    Informations forums :
    Inscription : Avril 2020
    Messages : 10
    Par défaut
    Merci beaucoup pour ces explications très claires. Je comprends mieux.


    Citation Envoyé par Menhir Voir le message
    "i" est une variable qui permet de définir le numéro de ligne de la cellule.


    Déjà, définir un numéro de ligne en tant que Byte, c'est vraiment une mauvaise idée : quand on remplit une piscine olympique, on ne compte pas les goutes. De même, quand on dispose d'une mémoire qui se compte en Go, économiser trois octets au risque de se retrouver avec un bug de dépassement, c'est ridicule.
    Commence par changer ce Byte en Long.

    Pour ce qui est de ton problème, cette ligne signifie que "i" varie de 1 jusqu'au nombre de ligne de la ListBox1.

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

Discussions similaires

  1. Question sur fonction =DocumentPartiellementActualisé()
    Par Maevan dans le forum SAP Business Objects
    Réponses: 2
    Dernier message: 27/12/2019, 13h05
  2. question sur fonction Mandelbrot
    Par ruler123 dans le forum MATLAB
    Réponses: 2
    Dernier message: 07/01/2018, 22h08
  3. Question sur fonction formulaR1C1
    Par alex830001 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 24/10/2008, 12h46
  4. Pb sur ActiveCell.FormulaR1C1 et fonction
    Par D@rkneo dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 02/07/2007, 15h50
  5. Réponses: 5
    Dernier message: 13/10/2005, 12h46

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