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 :

Aide sur Formule [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 43
    Par défaut Aide sur Formule
    Bonsoir à Tous,

    J'essaie depuis quelques jours de mettre en forme une formule que j'aurais besoin de répéter sur plusieurs lignes.
    Tout d'abord, je vais vous expliquer le but du fichier, celui-ci a pour but de gérer un tournoi sportif avec un nombre d'équipe pouvant varier.
    Sur la feuille "Tirage Groupes", j'inscris le nombre d'équipe dans la colonne A, puis, via une macro, je réalise le tirage au sort et les rencontres sont inscrites dans les colonnes F et H.

    Sur la feuille "Ronde N°1", via une macro, je copie les rencontres inscrites sur la feuille "Tirage Groupes" dans les colonnes C à I.
    Puis, via une autre macro, je réalise le tableau de classement dans les colonnes K à R.

    Et c'est là, que cela se corse.... J'ai bien réussi pour la 1ère partie (equipes inscrites dans colonne C) mais je n'y arrive pas à inscrire de formules pour la 2nde partie car lorsque je change de nombre d'équipes et donc de nombre de rencontres, ma formule n'est plus bonne.

    La voici (en tout cas le bout qui me pose problème) :
    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
    Range("G4:G" & Range("G64000").End(xlUp).Row).Copy
    Range("L64000").End(xlUp)(2).PasteSpecial Paste:=xlPasteValues
     
    ' Colonne Matchs joués pour 2nde colonne
    Formule = "=IF(R[-40]C[-4]="""",0,1)"
     
    Sheets("Ronde N°1").Range("M65536").End(xlUp).Offset(1, 0).Select
    With Selection
     .Formula = Formule
     .HorizontalAlignment = xlCenter
    End With
    'Selection.AutoFill Destination:=Range("M4:M" & Range("L" & Rows.Count).End(xlUp).Row), Type:=xlFillDefault
    Set Ws = Sheets("Ronde N°1")
    DerLig = Ws.Cells(Ws.Columns(13).Cells.Count, 13).End(xlUp).Row
    With Ws
     'Je détermine le numéro de la dernière ligne renseignée dans la colonne L
     DerLigL = .Range("L" & .Rows.Count).End(xlUp).Row
     'Je détermine le numéro de la dernière ligne renseignée dans la colonne M
     DerLigM = .Range("M" & .Rows.Count).End(xlUp).Row
     'J'effectue la recopie incrémentée dans la colonne M
     .Range("M" & DerLigM).AutoFill Destination:=.Range(.Range("M" & DerLigM), .Range("M" & DerLigL))
     End With
    Dans cette macro :
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    Sub test()
    Dim Ws As Worksheet
    Dim DerLig As Long
     
     
     
    Range("C4:C" & Range("C64000").End(xlUp).Row).Copy
    Range("L64000").End(xlUp)(4).PasteSpecial Paste:=xlPasteValues
     
    ' Colonne Matchs joués pour 1ère colonne
    Formule = "=IF(RC[-8]="""",0,1)"
    Sheets("Ronde N°1").Range("M4").Formula = Formule
    Range("M4").Select
    With Selection
     .HorizontalAlignment = xlCenter
    End With
    Selection.AutoFill Destination:=Range("M4:M" & Range("L" & Rows.Count).End(xlUp).Row), Type:=xlFillDefault
     
    ' Colonne Matchs gagnés pour 1ère colonne
    Formule = "=IF(RC[-9]=50,1,0)"
    Sheets("Ronde N°1").Range("N4").Formula = Formule
    Range("N4").Select
    With Selection
     .HorizontalAlignment = xlCenter
    End With
    Selection.AutoFill Destination:=Range("N4:N" & Range("L" & Rows.Count).End(xlUp).Row), Type:=xlFillDefault
     
    ' Colonne Matchs perdus pour 1ère colonne
    Formule = "=IF(RC[-10]<>50,1,0)"
    Sheets("Ronde N°1").Range("O4").Formula = Formule
    Range("O4").Select
    With Selection
     .HorizontalAlignment = xlCenter
    End With
    Selection.AutoFill Destination:=Range("O4:O" & Range("L" & Rows.Count).End(xlUp).Row), Type:=xlFillDefault
     
    ' Colonne Pts pour 1ère colonne
    Formule = "=RC[-11]"
    Sheets("Ronde N°1").Range("P4").Formula = Formule
    Range("P4").Select
    With Selection
     .HorizontalAlignment = xlCenter
    End With
    Selection.AutoFill Destination:=Range("P4:P" & Range("L" & Rows.Count).End(xlUp).Row), Type:=xlFillDefault
     
    ' Colonne Pts Adv. pour 1ère colonne
    Formule = "=RC[-8]"
    Sheets("Ronde N°1").Range("Q4").Formula = Formule
    Range("Q4").Select
    With Selection
     .HorizontalAlignment = xlCenter
    End With
    Selection.AutoFill Destination:=Range("Q4:Q" & Range("L" & Rows.Count).End(xlUp).Row), Type:=xlFillDefault
     
    ' Colonne Différence pour 1ère colonne
    Formule = "=RC[-13]-RC[-9]"
    Sheets("Ronde N°1").Range("R4").Formula = Formule
    Range("R4").Select
    With Selection
     .HorizontalAlignment = xlCenter
    End With
    Selection.AutoFill Destination:=Range("R4:R" & Range("L" & Rows.Count).End(xlUp).Row), Type:=xlFillDefault
     
     
     
     
     
    Range("G4:G" & Range("G64000").End(xlUp).Row).Copy
    Range("L64000").End(xlUp)(2).PasteSpecial Paste:=xlPasteValues
     
    ' Colonne Matchs joués pour 2nde colonne
    Formule = "=IF(R[-40]C[-4]="""",0,1)"
     
    Sheets("Ronde N°1").Range("M65536").End(xlUp).Offset(1, 0).Select
    With Selection
     .Formula = Formule
     .HorizontalAlignment = xlCenter
    End With
    'Selection.AutoFill Destination:=Range("M4:M" & Range("L" & Rows.Count).End(xlUp).Row), Type:=xlFillDefault
    Set Ws = Sheets("Ronde N°1")
    DerLig = Ws.Cells(Ws.Columns(13).Cells.Count, 13).End(xlUp).Row
    With Ws
     'Je détermine le numéro de la dernière ligne renseignée dans la colonne L
     DerLigL = .Range("L" & .Rows.Count).End(xlUp).Row
     'Je détermine le numéro de la dernière ligne renseignée dans la colonne M
     DerLigM = .Range("M" & .Rows.Count).End(xlUp).Row
     'J'effectue la recopie incrémentée dans la colonne M
     .Range("M" & DerLigM).AutoFill Destination:=.Range(.Range("M" & DerLigM), .Range("M" & DerLigL))
     End With
     
     
     
     
    Range("K4").Select
    ActiveCell.FormulaR1C1 = "1"
    Range("K5").Select
    ActiveCell.FormulaR1C1 = "2"
    Range("K4:K5").Select
    With Selection
     .HorizontalAlignment = xlCenter
    End With
    Selection.AutoFill Destination:=Range("K4:K" & Range("L" & Rows.Count).End(xlUp).Row), Type:=xlFillDefault
     
    Range("K3").Select
    ActiveCell.FormulaR1C1 = "Classement"
    Columns("L:L").ColumnWidth = 10
    With Selection
     .HorizontalAlignment = xlCenter
    End With
     
    Range("L3").Select
    ActiveCell.FormulaR1C1 = "Nom Equipe"
    Columns("L:L").ColumnWidth = 23
    With Selection
     .HorizontalAlignment = xlCenter
    End With
     
    Range("M3").Select
    ActiveCell.FormulaR1C1 = "J"
    Columns("M:M").ColumnWidth = 3
    With Selection
     .HorizontalAlignment = xlCenter
    End With
     
    Range("N3").Select
    ActiveCell.FormulaR1C1 = "V"
    Columns("N:N").ColumnWidth = 3
    With Selection
     .HorizontalAlignment = xlCenter
    End With
     
    Range("O3").Select
    ActiveCell.FormulaR1C1 = "D"
    Columns("O:O").ColumnWidth = 3
    With Selection
     .HorizontalAlignment = xlCenter
    End With
     
    Range("P3").Select
    ActiveCell.FormulaR1C1 = "Pts"
    Columns("P:P").ColumnWidth = 7
    With Selection
     .HorizontalAlignment = xlCenter
    End With
     
    Range("Q3").Select
    ActiveCell.FormulaR1C1 = "Pts Adv"
    Columns("Q:Q").ColumnWidth = 7
    With Selection
     .HorizontalAlignment = xlCenter
    End With
     
    Range("R3").Select
    ActiveCell.FormulaR1C1 = "Différence"
    Columns("R:R").ColumnWidth = 8
    With Selection
     .HorizontalAlignment = xlCenter
    End With
     
    Range("K2").Select
    End Sub
    Je mets une copie du fichier, si je n'est pas été assez clair
    http://www.cjoint.com/?0FAjB0a4yyN

    Et je vous remercie d'avance de l'aide que vous pourrez m'apporter.

    Youlig

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 43
    Par défaut
    Bonjour,

    J'avance un peu... mais comment écrire une formule sous cette forme :

    Formule = "=IF(R[-x/2]C[-4]="""",0,1)"

    Avec x = Worksheets("Tirage Groupes").[B2].Value

    Le .Formula ne fonctionne pas, j'ai essayé aussi avec le .FormulaR1C1 mais non plus.

    Une idée ?

  3. #3
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour, bonjour !

    Ce n'est pourtant pas compliqué : il faut sortir des guillemets tout ce qui est variable …

    "=IF(R[-" & Worksheets("Tirage Groupes").[B2].Value & "/2]C[-4]="""",0,1)"


    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 43
    Par défaut
    Bonjour Marc L,

    Merci de ton aide mais pas si évident pour un autodidacte...

    Par contre, comme je le mettais dans le message précédent, le .Formula ne veut d'une formule de ce type ???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Formule = "=IF(R[-" & Worksheets("Tirage Groupes").[B2].Value & "/2]C[-4]="""",0,1)"
     
    Sheets("Ronde N°1").Range("M65536").End(xlUp).Offset(1, 0).Select
    With Selection
            .Formula = Formule
            .HorizontalAlignment = xlCenter
    End With
    Comment puis-je y remédier ?

  5. #5
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut


    C'est normal vu que c'est une FormulaR1C1


    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 43
    Par défaut
    Merci de ton aide Marc L.

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

Discussions similaires

  1. [XL-2010] Aide sur formule de recherche texte
    Par LOLYLO dans le forum Excel
    Réponses: 4
    Dernier message: 24/06/2011, 17h11
  2. Aide sur formule excel
    Par noelkos dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 10/06/2011, 18h38
  3. Aide sur formule "Si"
    Par cabville dans le forum Webi
    Réponses: 9
    Dernier message: 07/02/2011, 09h55
  4. Aide sur formule (valeure nulle)
    Par blackhole dans le forum Deski
    Réponses: 2
    Dernier message: 07/10/2009, 17h35
  5. [AIDE] sur formule.
    Par Blink182 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 19/09/2006, 18h25

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