probleme de transfert dans les plage trio...

Guido

XLDnaute Accro
Bonsoir le Forum

Lors du transfert depuis la page pronos ,il manque la colonne B ,la premiere ligne de chaque pronos??? et la plage S14:W21

ainsi de suite dans les autre onglets selon le nombres de reunions et de courses???

il y a surement un manque d'info dans le VBA.. ( le VBA n'est pas de moi )

Merci d'avance

Guido
 

Pièces jointes

  • Transfert des donnes 2017.SPECIAL.xls
    834.5 KB · Affichages: 74
Dernière édition:

Guido

XLDnaute Accro
Re : probleme de transfert dans les plage trio...

Bonsoir Guido,

Avant d'ouvrir des fils tous azimuts il faudrait terminer les précédents :

Re

Oui,job75 tu as raison ,donc j'ai repondu et fermé le post car RESOLU pour moi..

maintenant ont peux...poursuivre celui ci

Merci d'avance

Guido
 

job75

XLDnaute Barbatruc
Re : probleme de transfert dans les plage trio...

Bonsoir Guido, le forum,

J'ai préféré refaire la macro RemplirTrios de Paritec car elle était très peu claire et beaucoup trop lente :

Code:
Const maxcourse = 9 'maximum de courses dans une feuille Trio, à adapter

Sub RemplirTrios()
Dim t, F As Worksheet, nf%, n, a(), i, course$, lig, h&, r As Range
t = Timer
Application.ScreenUpdating = False
For Each F In Worksheets
  If F.Name Like "Trio R*" Then
    nf = nf + 1
    F.[C1,B3:AE22,Q25:AE25,Q29:AE29,Z30:AE30,R31:W32] = "" 'RAZ dont 1ère zone
    F.[B23:P32].Clear 'RAZ 2ème et 3ème zones
    F.Rows("33:" & F.Rows.Count).Delete 'suppression des tableaux suivants
    With Feuil2
      '---liste des courses et adresses des 3 zones sources---
      n = 0: Erase a
      For i = 1 To maxcourse
        course = "Course: R." & Mid(F.Name, 7) & "-C." & i
        lig = Application.Match(course & "*", .[B:B], 0)
        If IsNumeric(lig) Then
          n = n + 1
          ReDim Preserve a(1 To 4, 1 To n)
          h = Application.Match("Rang*", .Cells(lig + 9, 2).Resize(20), 0)
          a(1, n) = course
          a(2, n) = lig + 8 & ":" & lig + h + 7 '1ère zone
          a(3, n) = "B" & lig + h + 8 & ":I" & lig + h + 17 '2ème zone
          a(4, n) = "S" & lig + h + 8 & ":W" & lig + h + 14 '3ème zone
        End If
      Next i
      If n Then
        '---création des n tableaux (vides)---
        For i = 2 To n
          F.Rows("1:32").Copy F.Cells(1 + 33 * (i - 1), 1) '1 ligne de séparation
        Next i
        '---remplissage des n tableaux
        For i = 1 To n
          lig = 1 + 33 * (i - 1)
          Set r = .Range(a(2, i)): h = r.Rows.Count
          '---Course---
          F.Cells(lig, 3) = a(1, i)
          lig = lig + 2
          '---1ère zone N°---
          F.Cells(lig, 2).Resize(h) = r.Columns(2).Value
          F.Cells(lig, 2).Resize(h).Copy Intersect(F.Rows(lig).Resize(h), _
            F.[F:F,I:I,K:K,N:N,Q:Q,T:T,W:W,Z:Z,AC:AC])
          '---1ère zone Mio---
          F.Cells(lig, 4).Resize(h) = r.Columns(4).Value
          F.Cells(lig, 4).Resize(h).Copy Intersect(F.Rows(lig).Resize(h), _
            F.[H:H,L:L,O:O,R:R,U:U,X:X,AA:AA,AD:AD])
          '---1ère zone Ml3---
          F.Cells(lig, 5).Resize(h) = r.Columns(5).Value
          '---1ère zone OVER---
          F.Cells(lig, 3).Resize(h) = "=RC[1]-RC[2]" 'formule
          F.Cells(lig, 3).Resize(h) = F.Cells(lig, 3).Resize(h).Value 'valeurs
          F.Cells(lig, 3).Resize(h).Copy Intersect(F.Rows(lig).Resize(h), F.[G:G,J:J])
          '---1ère zone APIC---
          F.Cells(lig, 13).Resize(h) = r.Columns(11).Value
          '---1ère zone Ar---
          F.Cells(lig, 16).Resize(h) = r.Columns(15).Value
          '---1ère zone Tot---
          F.Cells(lig, 19).Resize(h) = r.Columns(16).Value
          '---1ère zone Tot2---
          F.Cells(lig, 22).Resize(h) = r.Columns(17).Value
          '---1ère zone A3P---
          F.Cells(lig, 25).Resize(h) = r.Columns(18).Value
          '---1ère zone Fit2---
          F.Cells(lig, 28).Resize(h) = r.Columns(25).Value
          '---1ère zone Dern---
          F.Cells(lig, 31).Resize(h) = r.Columns(35).Value
          '---2ème zone---
          .Range(a(3, i)).Copy F.Cells(lig + 20, 2)
          '---3ème zone---
          .Range(a(4, i)).Copy F.Cells(lig + 20, 11)
        Next i
      End If
    End With
    F.Columns.AutoFit 'facultatif, ajustement largeur
  End If
Next F
Application.ScreenUpdating = True
MsgBox "Remplissage des " & nf & " feuilles Trios en " & Format(Timer - t, "0.00 \s")
End Sub
De plus j'ai supprimé les macros RefTrio et efface devenues inutiles.

Fichier joint.

Edit : Application.ScreenUpdating = False n'est pas indispensable mais c'est quand même un peu plus rapide.

A+
 

Pièces jointes

  • Transfert des donnees 2017.SPECIAL(1).xls
    688 KB · Affichages: 65
Dernière édition:

Guido

XLDnaute Accro
Re : probleme de transfert dans les plage trio...

Bonsoir job75


Merci pour ton travail pour ce fichier qui me tiens a cœur.

ca me plait enormement comme tout ce que tu as déjà fait pour moi..et Paritec en passant qui a fais aussi sa part de travail.

Job..

je te signal deux ou trois petites modification qui vont faire une grande avancées au fichier.

Ce fichier ressemble au autres...mais celui ci est avec des données plus precises...

Les chiffres qui se trouvent dans la page prono devrait avoir un point et non une virgule.. afin de pouvoir calculés les OVER...

qui se trouvent dans les pages TRIOS1-2-3-4-5-6-7.

Dans la page recap dans les lignes 14:22 les colonnes avec l'entete CHX1 CHX2 doivent rester vides,SVP.

elles seront destinées a l'affichage des chevaux qui se trouveront dans la plage S31:R31 en dessous de l'entete PRONO R.D

Colonne Q..R..S.

Merci d'avance job pour ta disponibillités

Amitiés

Guido
 

Pièces jointes

  • Page de TRIOS  Brute  sans le classement.jpg
    Page de TRIOS Brute sans le classement.jpg
    74.2 KB · Affichages: 68
  • Probleme-de-transfert-dans-les-plage-trio-transfert-des-donnees-2017.special-2.xls
    834 KB · Affichages: 67

job75

XLDnaute Barbatruc
Re : probleme de transfert dans les plage trio...

Re,

Les chiffres qui se trouvent dans la page prono devrait avoir un point et non une virgule.. afin de pouvoir calculés les OVER...

Les nombres décimaux de la feuille "Prono" sont bien des nombres et s'affichent donc avec le séparateur décimal de votre ordi.

Et ma macro calcule les "OVER" sans aucun problème comme vous pouvez le voir.

Cela dit si le séparateur décimal de votre ordi est le point il peut y avoir un problème lors du transfert des données dans la feuille "Prono"

Dans ce cas le plus simple est de modifier votre séparateur décimal dans le Panneau de configuration.

Dans la page recap dans les lignes 14:22 les colonnes avec l'entete CHX1 CHX2 doivent rester vides,SVP.

Il vous suffit de les effacer quand vous voulez avec cette instruction :

Code:
Feuil9.[C14:D22,H14:I22,M14:N22,R14:S22,W14:X22,AB14:AC22,AG14:AH22,Al14:AM22,AQ14:AR22] = ""
A adapter s'il y a plus de 9 réunions.

Bonne nuit.
 

Guido

XLDnaute Accro
Re : probleme de transfert dans les plage trio...

Re,



Les nombres décimaux de la feuille "Prono" sont bien des nombres et s'affichent donc avec le séparateur décimal de votre ordi.

Et ma macro calcule les "OVER" sans aucun problème comme vous pouvez le voir.

pour le classement des OVER ont en parle,,,demain,Merci d'avance

Re

Job75

J'ai modifier dans options excel la virgule par le point,Merci

Je vais aller me coucher

a demain pour la suite...

Merci,Bonne nuit

Guido
 

job75

XLDnaute Barbatruc
Re : probleme de transfert dans les plage trio...

Bonjour Guido,

Dans le fichier (1), lors du remplissage de la 1ère zone (N°, Mio, OVER), j'utilisais 3 fois .Copy.

Dans ce fichier (2) j'utilise à la place des formules de liaison :

Code:
Const maxcourse = 9 'maximum de courses dans une feuille Trio, à adapter

Sub RemplirTrios()
Dim t, F As Worksheet, nf%, n, a(), i, course$, lig, h&, r As Range
t = Timer
Application.ScreenUpdating = False
For Each F In Worksheets
  If F.Name Like "Trio R*" Then
    nf = nf + 1
    F.[C1,B3:AE22,Q25:AE25,Q29:AE29,Z30:AE30,R31:W32] = "" 'RAZ dont 1ère zone
    F.[B23:P32].Clear 'RAZ 2ème et 3ème zones
    F.Rows("33:" & F.Rows.Count).Delete 'suppression des tableaux suivants
    With Feuil2
      '---liste des courses et adresses des 3 zones sources---
      n = 0: Erase a
      For i = 1 To maxcourse
        course = "Course: R." & Mid(F.Name, 7) & "-C." & i
        lig = Application.Match(course & "*", .[B:B], 0)
        If IsNumeric(lig) Then
          n = n + 1
          ReDim Preserve a(1 To 4, 1 To n)
          h = Application.Match("Rang*", .Cells(lig + 9, 2).Resize(20), 0)
          a(1, n) = course
          a(2, n) = lig + 8 & ":" & lig + h + 7 '1ère zone
          a(3, n) = "B" & lig + h + 8 & ":I" & lig + h + 17 '2ème zone
          a(4, n) = "S" & lig + h + 8 & ":W" & lig + h + 14 '3ème zone
        End If
      Next i
      If n Then
        '---création des n tableaux (vides)---
        For i = 2 To n
          F.Rows("1:32").Copy F.Cells(1 + 33 * (i - 1), 1) '1 ligne de séparation
        Next i
        '---remplissage des n tableaux
        For i = 1 To n
          lig = 1 + 33 * (i - 1)
          Set r = .Range(a(2, i)): h = r.Rows.Count
          '---Course---
          F.Cells(lig, 3) = a(1, i)
          lig = lig + 2
          '---1ère zone N°---
          F.Cells(lig, 2).Resize(h) = r.Columns(2).Value
          Intersect(F.Rows(lig).Resize(h), _
            F.[F:F,I:I,K:K,N:N,Q:Q,T:T,W:W,Z:Z,AC:AC]).FormulaR1C1 = "=RC2"
          '---1ère zone Mio---
          F.Cells(lig, 4).Resize(h) = r.Columns(4).Value
         Intersect(F.Rows(lig).Resize(h), _
           F.[H:H,L:L,O:O,R:R,U:U,X:X,AA:AA,AD:AD]).FormulaR1C1 = "=RC4"
          '---1ère zone Ml3---
          F.Cells(lig, 5).Resize(h) = r.Columns(5).Value
          '---1ère zone OVER---
          Intersect(F.Rows(lig).Resize(h), F.[C:C,G:G,J:J]) _
            .FormulaR1C1 = "=RC4-RC5"
          '---1ère zone APIC---
          F.Cells(lig, 13).Resize(h) = r.Columns(11).Value
          '---1ère zone Ar---
          F.Cells(lig, 16).Resize(h) = r.Columns(15).Value
          '---1ère zone Tot---
          F.Cells(lig, 19).Resize(h) = r.Columns(16).Value
          '---1ère zone Tot2---
          F.Cells(lig, 22).Resize(h) = r.Columns(17).Value
          '---1ère zone A3P---
          F.Cells(lig, 25).Resize(h) = r.Columns(18).Value
          '---1ère zone Fit2---
          F.Cells(lig, 28).Resize(h) = r.Columns(25).Value
          '---1ère zone Dern---
          F.Cells(lig, 31).Resize(h) = r.Columns(35).Value
          '---2ème zone---
          .Range(a(3, i)).Copy F.Cells(lig + 20, 2)
          '---3ème zone---
          .Range(a(4, i)).Copy F.Cells(lig + 20, 11)
        Next i
        F.UsedRange = F.UsedRange.Value 'supprime les formules
      End If
    End With
    F.Columns.AutoFit 'facultatif, ajustement largeur
  End If
Next F
Application.ScreenUpdating = True
MsgBox "Remplissage des " & nf & " feuilles Trios en " & Format(Timer - t, "0.00 \s")
End Sub
C'est un peu plus rapide (0,64 s au lieu de 0,80 s).

A+
 

Pièces jointes

  • Transfert des donnees 2017.SPECIAL(2).xls
    687.5 KB · Affichages: 59
Dernière édition:

Guido

XLDnaute Accro
Re : probleme de transfert dans les plage trio...

Bonsoir job

je te remercie pour le fichier.je vais regarder.

si ,je te demande de faire des améliorations sur le fichier serais tu d'accord.

peux etre que le fichier vas s'alourdire.mais bon..ont verras.

je sais que le forum est fait pour nous aider ,et non pour nous faire du tout cuit ..mais ne sachant pas faire le VBA...sauf des petite macros...toutes simples.

merci pour ta future reponse

Amitiées Guido

Je penses te faire un petit mandat et un colis pour tes interventions pour moi.

a bientôt

Guido
 

job75

XLDnaute Barbatruc
Re : probleme de transfert dans les plage trio...

Bonjour Guido, le forum,

Je viens de modifier cette ligne pour les fichiers (1) et (2) :

Code:
F.[C1,B3:AE22,Q25:AE25,Q29:AE29,Z30:AE30,R31:W32] = "" 'RAZ dont 1ère zone
Mais peut-être vous faudra-t-il mettre des formules dans les zones Q25:AE25,Q29:AE29,Z30:AE30,R31:W32

Bien sûr dans ce cas il ne faudra pas les effacer et vous utiliserez le fichier (1).

Bonne journée.
 

Guido

XLDnaute Accro
Re : probleme de transfert dans les plage trio...

Re

Bonjour job75

Merci pour ses derniere infos.

Peut t'on ajouter lors de la mise en place des trios avec les donnes l'équivalant de la colonne " B " en colonne " AF ".

et dans la plage " D23:I32 " garder seulement la plage " B23:I27 ", la plage " B28:I32 " seras pour le calcul

par colonnes des asterixes. Soit pour l'addition par colonne plage ( " D25:D27 "..E...F..G..H...I.) dont le résultats

devrais s'affichés dan la ligne 29 . ainsi de suite selon le nombres de courses possibles et de reunion..

Merci d'avance

A plus

Amitiées

Guido

PS

Pour Job75 ou d'autres personnes du Forum

Dans la plage K31:p31 ,j'aimerais avoir le classement

des CHX cités dans la plage " L25:O29 " selon les points qu'ils obtiennes..dans les colonnes L-M-N-O,

Soit 4 point si dans la " col.L-3 " point si dans la " col..M-2 "point si dans la " col..N " et 1 point si dans la " col O ".

Ensuite faire afficher ce classemment dans la plage K31:p31 ainsi de suite selon le nombres de course et de reunions possibles....

Merci d'avance

Se fichier me sert pour des stats sur different sports. chacun pourrais s'en servir et l'adapté selon ..

Merci d'avance

Guido
 

Pièces jointes

  • 365523d1464853232-probleme-de-transfert-dans-les-plage-trio-transfert-des-donnees-2017.special-1.xls
    769.5 KB · Affichages: 55
  • Classer-par-point-et-faire-afficher-les CHX avec leurs cotes respectives  colonne  D de la feuil.jpg
    Classer-par-point-et-faire-afficher-les CHX avec leurs cotes respectives colonne D de la feuil.jpg
    62.3 KB · Affichages: 51

job75

XLDnaute Barbatruc
Re : probleme de transfert dans les plage trio...

Bonjour Guido,

Effectivement il faut utiliser la méthode du fichier (1) car maintenant il y a des formules.

En D28:I28 (NB.SI), en D31:I31 (liaisons) et en D32:I32-K32:p32-R32:W32 (RECHERCHEV).

Bien entendu j'ai revu les adresses des zones à copier et les RAZ.

Pour le classement en K31:p31 j'utilise cette fonction ClassePoint et la macro de tri Quick sort :

Code:
Dim d As Object 'mémorisation

Function ClassePoint(t)
't doit être une matrice de 5 lignes et 4 colonnes
Dim i, j, a, b
d.RemoveAll 'RAZ du Dictionary
For i = 1 To 5
  For j = 1 To 4
    If t(i, j) <> "" Then d(t(i, j)) = d(t(i, j)) + 5 - j
Next j, i
If d.Count = 0 Then ClassePoint = "": Exit Function
a = d.items
b = d.keys
tri a, b, 0, UBound(a)
ClassePoint = b 'vecteur ligne
End Function

Sub tri(a, b, gauc, droi)     ' Quick sort
Dim ref, g, d, temp
ref = a((gauc + droi) \ 2)
g = gauc: d = droi
Do
    Do While a(g) > ref: g = g + 1: Loop
    Do While ref > a(d): d = d - 1: Loop
    If g <= d Then
      temp = a(g): a(g) = a(d): a(d) = temp
      temp = b(g): b(g) = b(d): b(d) = temp
      g = g + 1: d = d - 1
    End If
Loop While g <= d
If g < droi Then Call tri(a, b, g, droi)
If gauc < d Then Call tri(a, b, gauc, d)
End Sub

Sub RemplirTrios()
'-----
Set d = CreateObject("Scripting.Dictionary") 'une seule création, pour accélérer
'-----
          With F.Cells(lig + 28, 11).Resize(, 6)
            .Value = ClassePoint(F.Cells(lig + 22, 12).Resize(5, 4).Value)
            .Replace "#N/A", ""
          End With
Fichier (3).

Malgré les ajouts la durée d'exécution n'est guère augmentée.

A+
 

Pièces jointes

  • Transfert des donnees 2017.SPECIAL(3).xls
    751.5 KB · Affichages: 61

Guido

XLDnaute Accro
Re : probleme de transfert dans les plage trio...

Bonjour job75 et le Forum

Je te remercie pour la mise en place du fichier cela me convient énormement.

Ont arrive a la fin des mises en place des données qui proviennent de la page Prono.

Ils reste a faire aller dans les plages Recap les deux premier chx de la plage D31:E31.....64...97..130......229...262 et selon le

nombres de courses par reunions.. voir page Recap les precision....

Dernieres demandes pour ce fichier ????

1°Dans la pages Trios ,j'aimerais voir s'afficher les mots

Rang :
Synthèse
Valeur
-----
A3P
NB " * "

a la place de

Rang :
Synthèse
Valeur
-----
A3P
Nombres de " * "

Et

POINTS
OS
2BM4
A.P
C.L
P.C
a la place de

POINTS
OS
2BM4
A partir de
Choix logiciel
PC.

La macros Mise en place de la page Arrivée a un BUG ,Merci de pouvoir reparer

Merci d'avance, Salutations

Guido
 

Pièces jointes

  • 365701d1464966287-probleme-de-transfert-dans-les-plage-trio-transfert-des-donnees-2017.special-3.xls
    705.5 KB · Affichages: 48
Dernière édition:

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16