XL 2016 Problème macro

lehcim

XLDnaute Nouveau
Je veux alimenter un feuillet en allant récupérer les informations sur un feuillet « rencontres ». Il s’agit de pétanque avec des prénoms en colonne A et B et des scores en colonne C ;

Comme j’ai pas mal de lignes (ici je n’ai fait qu’un extrait) j’ai créé 2 macros ;

Pour les prénoms je n’ai aucun souci, mais celle pour les scores ne fonctionne pas et je n’arrive pas à trouver pourquoi.

Quelqu’un pourrait-il me résoudre ce problème ?

Merci d’avance.



Cordialement
 

Pièces jointes

  • Test2.xlsm
    16.3 KB · Affichages: 6
Solution
@lehcim

Ceci devrait mieux fonctionner .... ;)
Dans un module
VB:
Sub Test()
Dim TDon(), TRés(), L&, SC() As String
TDon = Sheet2.[A34:C48].Value
ReDim TRés(1 To UBound(TDon, 1) * 2, 1 To 3)
For L = 1 To UBound(TDon, 1)
    SC = Split(TDon(L, 3), "-")
    TRés(2 * L - 1, 1) = TDon(L, 1): TRés(2 * L - 1, 2) = SC(0) * 1: TRés(2 * L - 1, 3) = SC(0) * 1 - SC(1) * 1
    TRés(2 * L, 1) = TDon(L, 2): TRés(2 * L, 2) = SC(1) * 1: TRés(2 * L, 3) = SC(1) * 1 - SC(0) * 1
Next L
Feuil3.[A5:C34].Value = TRés
End Sub

Merci de ton retour

Dranreb

XLDnaute Barbatruc
Bonsoir.
Un peu sommaire votre classeur, je trouve.
Je vous propose d'examiner celui ci.
Je joins aussi le classeur actuel au cas où la version en téléchargement n'était pas à jour.
 

Pièces jointes

  • TirageTousVersus.xlsm
    121 KB · Affichages: 2

lehcim

XLDnaute Nouveau
Bonjour,
Merci pour ce retour rapide mais je voudrais savoir pourquoi ma macro s'enregistre bien mais ne fonctionne pas lorsque je la lance !
Par ailleurs j'organise des petits tournois de pétanque et je connais celui que vous m'avez proposé.

Cordialement.
 

Dranreb

XLDnaute Barbatruc
Je pourrais sans doutes vous dire comment je l'écrirais si j'arrivais à comprendre ce qu'elle est sensée faire
Est-ce que cette macro aurait du sens : ?
VB:
Sub Test()
   Dim TDon(), TRés(), L&, SC() As String
   TDon = Feuil1.[A1:C5].Value
   ReDim TRés(1 To UBound(TDon, 1) * 2, 1 To 3)
   For L = 1 To UBound(TDon, 1)
      SC = Split(TDon(L, 3), "-")
      TRés(2 * L - 1, 1) = TDon(L, 1): TRés(2 * L - 1, 2) = SC(0) * 1: TRés(2 * L - 1, 3) = SC(1) * 1
      TRés(2 * L, 1) = TDon(L, 2): TRés(2 * L, 2) = SC(1) * 1: TRés(2 * L, 3) = SC(0) * 1
      Next L
   Feuil2.[A1:C10].Value = TRés
   End Sub
 
Dernière édition:

lehcim

XLDnaute Nouveau
J'ai modifié mon peti "programme" pour que vous puissiez comprendre. J'ai le feuillet "rencontres" avec les joueurs qui s'affrontent et le score. Le feuillet "formules" reprend les formules créées pour récupérer les informations des rencontres et le feuillet résultat montre ce que je veux obtenir. Pour cela j'ai créé 2 macros, la 1ère des prénoms fonctionne bien mais la seconde pour récupérer les scores ne s'exécute pas alors qu'elle est construite comme la 1ère !!.
J'espère que c'est plus clair.
Merci encore de votre aide.
 

Phil69970

XLDnaute Barbatruc
Bonjour à tous

@lehcim
Ta macro est incompréhensible...... et ne fait pas du tout ce que tu voudrais faire !
Vu ton fichier du post §8 avec l'exemple du résultat que tu voudrais il suffit de reprendre la macro de Bernard en la modifiant légèrement pour avoir exactement ce que tu souhaites avoir dans la feuille résultat :

VB:
Sub Test()
Dim TDon(), TRés(), L&, SC() As String
TDon = Feuil1.[A1:C5].Value
ReDim TRés(1 To UBound(TDon, 1) * 2, 1 To 3)
For L = 1 To UBound(TDon, 1)
    SC = Split(TDon(L, 3), "-")
    TRés(2 * L - 1, 1) = TDon(L, 1): TRés(2 * L - 1, 2) = SC(0) * 1: TRés(2 * L - 1, 3) = 13 - SC(1) * 1
    TRés(2 * L, 1) = TDon(L, 2): TRés(2 * L, 2) = SC(1) * 1: TRés(2 * L, 3) = SC(1) * 1 - 13
Next L
Feuil3.[A1:C10].Value = TRés
End Sub

Tu effaces les valeurs de ta feuille résultat et tu exécutes la macro ci dessus qui est je le répète celle de Bernard à peine retouché !

Merci de ton retour
 

lehcim

XLDnaute Nouveau
Merci à vous (Dranreb et Phill6970),
J'ai testé et ça fonctionne très bien. Je ne connais les macros que celles que l'on fait en exécutant les actions après "Enregistrer une macro" et "Arrêter l'enregistrement" c'est dire mon petit niveau.
Peut-être avez-vous la même pour les prénoms car elle est également un peu compliquée mais elle fonctionne.
Je vais tester votre macro avec mon programme pétanque complet.
Merci encore.

Cordialement
 

lehcim

XLDnaute Nouveau
Pour adapter votre macro à mon programme c'est pas gagné ! j'ai essayé rapidement mais sans réussir. Je m'y remettrais ce soir car je suis pris cet AM. Je n'ose pas vous transmettre mon programme car c'est un peu une "usine à gaz" et vous allez vous "moquer".
Bonne après-midi
 

Phil69970

XLDnaute Barbatruc
Re

Pour adapter votre macro à mon programme c'est pas gagné ! j'ai essayé rapidement mais sans réussir.

Logiquement on fournit un fichier représentatif

C'est quoi représentatif ?

- représentatif, même organisation des lignes et des colonnes, mêmes libellés, même nom des TS, mêmes noms de feuilles...
- anonymisé, pas de données personnelles réelles tels nom, n° sécu, adresse ... remplacé par Nom1, Nom2 etc ....
- simplifié, une quinzaine de lignes reproduisant l'ensemble des différents cas envisageables (Avec le résultat souhaité éventuellement)

Si cela fonctionne sur le fichier fourni et pas sur le vrai fichier c'est qu'il n'est en rien représentatif ou que tu n'as pas su transposer ce qui devrait être un simple copier coller du code.

Je n'ose pas vous transmettre mon programme car c'est un peu une "usine à gaz" et vous allez vous "moquer".
On ne va pas se moquer car on a tous débuté un jour mais cela fait 15 ans que tu es inscrit sur le site donc pas complètement un débutant ;)

Bonne lecture
 

lehcim

XLDnaute Nouveau
Bonsoir,
Je n'ai pas réussi à transposer votre macro "Erreur d'exécution 9 L'indice n'appartient pas à la sélection".
Puis-je abuser en vous demandant de l'adapter à mon programme que je vous joins.
Il s'agit de récupérer les informations A34 à C48 du feuillet 4 (rencontres) et de les inscrire dans A5 à C34 du feuillet 6 (Récap)
Merci à vous !

Cordialement.
 

Pièces jointes

  • Tournoi 12-03-2024 TAT 30 joueurs 5 tours.xlsm
    78.9 KB · Affichages: 1

Phil69970

XLDnaute Barbatruc
@lehcim

Dans un module

VB:
Sub Test()
Dim TDon(), TRés(), L&, SC() As String
TDon = Sheet2.[A34:C48].Value
ReDim TRés(1 To UBound(TDon, 1) * 2, 1 To 3)
For L = 1 To UBound(TDon, 1)
    SC = Split(TDon(L, 3), "-")
    TRés(2 * L - 1, 1) = TDon(L, 1): TRés(2 * L - 1, 2) = SC(0) * 1: TRés(2 * L - 1, 3) = 13 - SC(1) * 1
    TRés(2 * L, 1) = TDon(L, 2): TRés(2 * L, 2) = SC(1) * 1: TRés(2 * L, 3) = SC(1) * 1 - 13
Next L
Feuil3.[A5:C34].Value = TRés
End Sub

Merci de ton retour
 

Statistiques des forums

Discussions
312 211
Messages
2 086 300
Membres
103 173
dernier inscrit
Cerba95