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 :

Pb "d'offset" avec la notation R1C1


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 40
    Points : 27
    Points
    27
    Par défaut Pb "d'offset" avec la notation R1C1
    Bonjour à tous,

    Le but est, via une macro, insérer une formule:
    - sur la feuille 4.
    - qui prend en compte deux variable au moins.
    - sur sur une zone comprise entre les colonnes A--> "dernière colonne avec du texte" et entre les lignes 7 et 9.
    -la ligne totale et la ligne 10.

    En gros ça donne ça mais j'ai un problème de décalage:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub test()
    Dim x As Integer
    Dim y As Integer
    x = 7
    y = 1
    While Sheets("feuil4").Cells(x, y).Value <> ""
    Sheets("feuil4").Cells(x + 3, y).FormulaR1C1 = "= SUM(R[" & x & "]C[" & y & "]_
    :R[" & x + 2 & "]C[" & y & "])"
    y = y + 1
    Wend
    End Sub
    Pour chaque incrémentation de "y" la zone de calcul se décale d'une colonne supplémentaire puis deux puis trois... et le calcul (du a "x") s'effectue entre les lignes 17 et 19.

    J'ai comprit que c'était du à l'initialisation des variables "x" et "y" mais je ne comprend pas pourquoi en écrivant sous la syntaxe R1C1 ça décale comme ça et si il y a pas un autre moyen ?

    Merci a tous pour vos réponses!

  2. #2
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour,

    Dans un premier temps, x=7 et y=1
    Donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "= SUM(R[" & x & "]C[" & y & "]:R[" & x + 2 & "]C[" & y & "])"
    revient à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "=SUM(R[7]C[1]:R[9]C[1])"
    ce qui revient à dire
    cells(Ligne, Colonne)=SOMME(Ligne+7Colonne+1:Ligne+9Colonne+1)

    Si j'ai bien compris ce que tu cherches à obtenir, tu dois l'écrire comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "= SUM(R" & x & "C" & y & ":R" & x + 2 & "C" & y & ")"

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut Sarune et le forum
    R1C1 est une notation avec les colonnes en numérique
    Quand tu écrit : R1C1 : ça revient à écrire $A$1
    si tu écris en B5 :
    =R1C1 : ça revient à écrire : la ligne de numéro 1 et la colonne de numéro 1 : =$A$1 en notation par défaut
    =R[1]C[1] revient à écire : une colonne à droite, une ligne plus bas que la cellule contenant la formule : =C6

    Tu mets la formule :
    "= SUM(R[x]C[y]:R[x+2]C[y])"
    faire la somme de la plage d'adresse y colonnes de la cellule contenant la formule, de X à x+2 lignes de la cellule contenant la formule

    il faudrais peut-être écrire : en adressage abolu
    "= SUM(R7C" & y & ":R9C & y & ")" B10 : =somme($B$7:$B$9)
    ou en relatif
    "= SUM(R[-3]C:R[-1]C)" B10 : =Somme(B7:B9)

    on peut employer une autre formulation si on est en français et pas en L1C1
    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
    Sub test()
    Dim x As Integer
    Dim y As Integer
    Dim z
    x = 7
    y = 1
    With Sheets("feuil4")
        While .Cells(x, y).Value <> ""
            'Adressage absolu
            '.Cells(x + 3, y).FormulaLocal = "=Somme(" & Range(Cells(x, y), _
            '                                     Cells(x + 2, y)).Address & ")"
            'Adressage relatif
            .Cells(x + 3, y).FormulaLocal = "=Somme(" & Range(Cells(x, y), _
                                            Cells(x + 2, y)).Address(0, 0) & ")"
     
            y = y + 1
        Wend
    End With
    End Sub
    On peut aussi mettre le nom de la feuille si nécessaire :
    "=Somme('feuil4'!" & range...
    A+

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 40
    Points : 27
    Points
    27
    Par défaut
    It works !

    Merci à vous deux je comprend mieux la notation R1C1.
    En fait c'est cette notation de valeur absolu ou relative en fonction des "[]" qui m'échappait.
    En tout cas merci pour votre perspicacité !

    Pour info, j'ai modifié mon code de la sorte en retirant juste les "[]".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub test()
    Dim x As Integer
    Dim y As Integer
    x = 7
    y = 1
    While Sheets("feuil4").Cells(x, y).Value <> ""
    Sheets("feuil4").Cells(x + 3, y).FormulaR1C1 = "= SUM(R" & x & "C" & y & "_
    :R" & x + 2 & "C" & y & ")"
    y = y + 1
    Wend
    End Sub
    Merci encore

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

Discussions similaires

  1. Requete avec quote et double quote
    Par swissmade dans le forum VBA Access
    Réponses: 2
    Dernier message: 20/08/2007, 16h01

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