Concours Pétanque en "Mêlée" (Projet)
Bonjour à tous,
Bonjour Claude,
Il accepte toujours les VBA. Je n'ai pas changé de matériel.
Déjà au moment de la nouvelle inscription il ya un bug à la macro "NOUVEAUCONCOURS" à la ligne :
" .Rows(8 & ":" & Lg + 1).Delete". Je pense que la plateforme MAC n'accepte pas le "rows".
bien entendu je ne peux pas aller plus loin.
@+
Bon dimanche
Amicalement
Noel
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
Bonjour Noel, forum,
Je pense que la plateforme MAC n'accepte pas le "rows".
non, çà ne doit pas venir de là, puisque 7 lignes + haut tu as
Rows("7:200").ClearContentset çà passe !
Que dit le message d'erreur ?
C'est peut-être la ligne de dessus qui coince
Lg = .Cells.Find("*", , , , xlByRows, xlPrevious).Rowessaye de la remplacer par
Lg = .Range("c65536").End(xlUp).Rowet vois si çà bloque au même endroit,
Sinon, il faudrait voir avec Dan qui connait bien le Mac
Si le sujet t'intéresse toujours, bien sûr !
Bonne journée
Claude
Re,
Après avoir remplacé la ligne demandée, il ya toujours le même BUG
"Erreur d'exécution 1004"
Je verrai avec Dan.
@+
Amicalement
Boel
Bonjour,
En fait le souci ne vient pas de la ligne ".Rows(8 & ":" & Lg + 1).Delete" mais de la protection des feuilles.
Dans le code il faut déprotéger chaque pour effectuer une action. Je m'étonne que le code fonctionnait sous PC d'ailleurs.
Toutefois sous PC un bug apparait à la fin du code sur Range("E5") =inscriptions. Bug logique puisque là on tente d'écrire dans une cellule protégée.
Ci-dessous le code qui fonctionne sous PC et MAC. Mes modifications sont suivies de mon pseudo.
Sub NouveauConcours()
Dim Lg%, i%, Plg As Range, Rep%
Dim Affiche
Rep = MsgBox("ATTENTION Cette action remet tout à zéro !" & Chr(10) & _
"confirmez ?", vbYesNo + vbCritical + vbDefaultButton2, "Concours")
If Rep = vbNo Then Exit Sub
Application.ScreenUpdating = False
'---
Affiche = Array("Inscriptions", "Règlement", "Impression") 'feuilles à afficher
For i = 1 To Worksheets.Count
If IsError(Application.Match(Worksheets(i).Name, Affiche, 0)) Then
Worksheets(i).Visible = False
Else
Worksheets(i).Visible = True
End If
Next
'---
ActiveSheet.Unprotect Password:="dudu"
Range("d2,d3,d4").Locked = False
Rows("7:200").ClearContents
'---
With Sheets("Concours")
.Unprotect Password:="dudu" 'Dan
On Error Resume Next
.ShowAllData
On Error GoTo 0
Lg = .Cells.Find("*", , , , xlByRows, xlPrevious).Row
.Rows(8 & ":" & Lg + 1).Delete 'Dan
.Protect Password:="dudu"
End With
With Sheets("Podium")
.Unprotect Password:="dudu" 'Dan
.Rows("20:200").Delete
.Range("b2").ClearContents
.Range("j1") = "=SUM(h9:h14)"
.Range("f:f").ClearContents 'efface départage ex-æquo
.Protect Password:="dudu" 'Dan
End With
With Sheets("PodiumF")
.Unprotect Password:="dudu" 'Dan
.Rows("20:500").Delete
.Range("b2").ClearContents
.Range("j1") = "=SUM(h9:h14)"
.Range("f:f").ClearContents 'efface départage ex-æquo
.Protect Password:="dudu" 'Dan
End With
Sheets("Listes").Rows("5:500").Delete
With ActiveSheet.Shapes("bibi")
.Select
Selection.Caption = "Fin des inscriptions"
Selection.OnAction = "GoX"
End With
Range("e5") = "Inscriptions"
Range("d3") = "Triplette" 'par défaut
ActiveSheet.Protect Password:="dudu" 'Dan
End subAmicalement
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
Bonjour Dan, forum,
Merci de te pencher sur le projet,
à quoi sert alors cette ligne dans le ThisWorkbook ?
Worksheets(i).Protect Password:="dudu", UserInterfaceOnly:=Truenormalement elle est sensée permettre les écritures sans déprotéger
à moins qu'elle ne s'applique pas sur Mac ? (sur PC c'est ok)
Sinon il faut déprotéger dans toutes les procédures, c'est le souk !!
tu n'as pas tester + loin ? , çà doit être pareil
En tout cas merci, Noel sera quoi faire maintenant,
pour ma version PC, j'ai pas trop envie de toucher à çà.
Bonne journée
Claude
Bonjour à tous,
Bonjour Claude, Dan,
Effectivement j'arrive à le faire fonctionner sur MAC.
A ce jour je ne suis pas parti plus loin que "NOUVEAUCONCOURS". Je vais prendre mon temps pour pousser un peu plus en avant.
En tous cas merci à vous deux.
Amicalement
Noel
re,
désolé mais j'avais laissé ce suivi en suspend.
Merci de te pencher sur le projet,à quoi sert alors cette ligne dans le ThisWorkbook ?
Ta réponse à attiré mon attention car je n'avais pas été voir de ce coté.
Voici la réponse. En fait sur MAC l'instruction Protect nécessite de bien compléter tous les items.
va dans Thisworkbook, Private Sub Workbook_Open(), et remplace cette ligne :
Worksheets(i).Protect Password:="dudu", UserInterfaceOnly:=Truepar ceci :
Worksheets(i).Protect Password:="dudu", _
DrawingObjects:=True, _
Contents:=True, _
Scenarios:=True, _
Userinterfaceonly:=TrueAmicalement
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
Bonjour à tous,
Bonjour Dan,
J'ai appliqué ta modif code, c'est toujours Ok sur PC Excel 2007
Crois-tu que ce projet pourrait être compatible PC, MAC ? (sans trop chambouler l'ensemble)
as-tu tester + loin ?
Me reste un point noir que j'aimerai éviter :
sur feuille "Inscriptions"
j'ai un bouton qui change d'affectation macro (rectangle nommé "bibi")
soit "Nouveau concours" (macro "Nouveau concours" qui remet tout à zéro)
soit "Fin des inscriptions" (macro "GoX" qui formate et démarre les jeux)
Je n'ai pas réussi à modifier ce bouton sans le sélectionner et déprotéger la feuille
ActiveSheet.Unprotect Password:="dudu"
Range("e5") = "Inscriptions"
Range("d3") = "Triplette" 'par défaut
With ActiveSheet.Shapes("bibi")
.Select
Selection.Caption = "Fin des inscriptions"
Selection.OnAction = "GoX"
End With
ActiveSheet.Protect Password:="dudu", _
DrawingObjects:=True, _
Contents:=True, _
Scenarios:=True, _
Userinterfaceonly:=TruePeut-être créer un bouton standard à chaque fois ?
Bien sûr, on pourrait laisser 2 boutons, mais je préfère un seul.
Merci Dan pour tes précieux conseils,
j'ai du mal à conclure ce projet !
Amicalement
Claude
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
Bonjour à tous,
Je viens de m'apercevoir d'un bug
pour 5 parties en doublette démêlée avec 9 équipes
Banzai64 me l'avais déjà signalé, je pensais l'avoir réglé, mais non !!
Dans la macro "GoX", vers le début code revu
If Range("d2") = "équipes démêlées" Then
If jeux = 2 And Pa = 3 Then i = 4 'en doublette seulement
If Eq < i Then
MsgBox ("En équipes démêlées" & Chr(10) & "Il faut " & i & " équipes mini pour jouer " & Pa & " parties")
Exit Sub
End If
Else 'équipes formées
If Eq < F Then
MsgBox ("En équipes formées" & Chr(10) & "Il faut " & F & " équipes mini pour jouer " & Pa & " parties")
Exit Sub
End If
End IfCi-joint, fichier modifié
Je continue les tests
édit: suite à autre bug, j'ai revu entièrement la partie de code et remplacé fichier.
PS: çà ne change rien à la question posée à Dan, sur mon message précédent.
Amicalement
Claude
Bonjour Claude
Crois-tu que ce projet pourrait être compatible PC, MAC ? (sans trop chambouler l'ensemble)
Bien entendu cela doit être possible. De base, avec le MAC il vaut mieux faire attention à ne pas supprimer des paramètres dans les instructions et éviter certaines instructions qui sont apparues après excel 2002. Avec MAC tu dois rester simple et logique car tout est simple sur cette plateform. Avec le PC on fait souvent parfois plus de choses mais on a souvent pleins de soucis à droite et à gauche.
Lol ! Actuellement ma première difficulté est de comprendre comment fonctionne un concours de pétanque
Je vais tester plus loin et reviens vers toi.
Amicalement
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
Bonjour à tous,
Bonjour Dan,
Actuellement ma première difficulté est de comprendre comment fonctionne un concours de pétanque
Sans entrer dans les détails d'un concours,
Dans la feuille "Inscriptions"
bouton "Nouveau concours",
choix des 3 options (en haut à gauche) et remplir le nom des participants.
une fois les inscriptions faites et validées par le bouton "Fin des inscriptions",
Dans la feuille "Concours"
il s'agit de remplir les cases jaunes (score perdant de 0 à 12), l'équipe adverse aura automatiquement
le score de 13.
à ce score est attribué un nombre de points pour le classement (voir feuille "règlement")
La difficulté de ce projet est qu'il y a pas mal d'options de jeux suivant les inscriptions
(équipes formées ou démêlées, paires ou impaires, en doublette ou triplette, nombre de parties etc..)
J'ai voulu faire un truc simple d'emploi (et c'est pas facile !)
avec un minimum de feuilles (colonnes masquées ou pas, selon les cas)
Je voulais aussi que l'utilisateur ne puisse sélectionner que les cellules à remplir, d'où la
protection des feuilles avec l'option "Sélectionner les cellules déverrouillées"
Si trop de boulot pour rendre compatible MAC ou PC, tant pis, j'en resterais là !
sinon comment faire ?, je n'ai pas "MAC" pour tester.
En tout cas, merci Dan pour l'intérêt porté à ce projet.
Amicalement
Claude
re,
Merci de tes explications.
.sinon comment faire ?, je n'ai pas "MAC" pour tester
Pas grave, je regarderai puis cfn3cfn (Noel) peut aussi tester de son coté. Nous en parlons de temps en temps en direct.
Laisse moi juste un peu de temps car je suis aussi sur un autre projet sur des TCD et Graphiques associés qui me prend pas mal de temps.
Je viens de tester le code Podium qui me renvoie une erreur sur le code ci-après :
.Range("b2:f" & Lg).Sort Key1:=.Range("e2"), Order1:=xlDescending, _
Key2:=.Range("f2"), Order2:=xlAscending, _
Key3:=.Range("b2"), Order2:=xlAscending, _
Header:=xlNo, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottomJe vois que tu inclus la colonne F mais dans la feuille Podium, il n'y a pas de données dans cette colonne. Es-tu sûr de Range("f2") ??
Amicalement
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
re Dan,
La colonne "F" sert à départager les ex-æquo
il y aura un "G" inscrit dans cette colonne en face du nom (après le départage, si besoin)
le tri remonte donc le "G" (gagnant)
La macro "Podium" est activée à chaque fois avec le bouton "Podium"
pourquoi çà fait boguer ??
A noter que les colonnes "C:D" sont vides également sur "Podium"
Attention, tu as une autre feuille "PodiumF" pour les jeux en équipes formées.
Tu as vu pour le bouton commun "Fin des inscriptions" ou "Nouveau concours" ?
à suivre
Claude
re,
Tu as vu pour le bouton commun "Fin des inscriptions" ou "Nouveau concours" ?
Oui pas de souci c'est le clique sur le bouton Nouveau concours qui change le libellé du bouton.
Pour l'histoire du tri, j'avais bien vu la feuille PodiumF. Mais bizarre que cela bug. Il se peut que cela vienne des instructions de tri. Etant au boulot là, je vais tester sur excel 2000 et ce soir sur MAC.
Amicalement
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
Bonjour Dan, forum,
Chez moi et sur mon ancien PC avec Excel 2000, le programme ne fonctionne pas correctement,
plein de bugs !
vois ce lien où j'en parle.
lien: https://forum.excel-pratique.com/excel/protection-feuille-suivant-version-t23927.html#p135538
Ma dernière version sur PC et sur Excel 2003/2007 à l'air d'être stabilisée,
il serait peu-être préférable de faire une version MAC à part,
ton avis ?
Amicalement
Claude
re
Chez moi et sur mon ancien PC avec Excel 2000, le programme ne fonctionne pas correctement
J'ai aussi quelque bugs. Je suis en train de voir cela.
il serait peu-être préférable de faire une version MAC à part,
Peut être mais j'aimerais tester cela car ce n'est pas sûr. En général tous les codes que je propose fonctionne sur les deux plateformes. C'est d'ailleurs pour cette raison que j'évite d'utiliser certaines instructions.
Dans les SUB Podium et PodiumF, j'avais un bug lors du tri. En fait il y a une erreur dans le code à "Range("b2"). L'instruction "Order" était mis à 2 et faisait doublons avec range("F2"), order2
Voici le code corrigé à mettre dans cette SUB où "order" devient 3.
.Range("b2:f" & Lg).Sort Key1:=.Range("e2"), Order1:=xlDescending, _
Key2:=.Range("f2"), Order2:=xlAscending, _
Key3:=.Range("b2"), Order3:=xlAscending, _
Header:=xlNo, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottomJe retourne à mes tests
Amicalement
Edit : Au fait dans la feuille Podium, pourquoi as-tu figé les volets en cellule B20 au lieu de B2 ?
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
Bonsoir Dan, forum,
J'ai corrigé le tri,
tu as la même erreur sur Sub Podium et Sub Classement (copier coller !)
C'est d'ailleurs pour cette raison que j'évite d'utiliser certaines instructions.
Tu n'aurai pas une liste de ces fonctions à éviter ? si on peut faire la même chose, mais
coder différemment, je pourrais avancé de mon coté.
suite à ton édit:
les volets son figés en ligne 20, car j'ai besoin de toujours voir les 20 premières lignes
à cause du départage des ex-æquo qui démasque des colonnes, ainsi que le dessin du Podium,
(on peut avoir une centaine de noms inscrit)
mais tu n'as pas encore été jusqu'à là.
à suivre
Claude
e
Tu n'aurai pas une liste de ces fonctions à éviter ?
Pas vraiment c'est un peu au fur et à mesure de lecture de code que je m'en rappelle. Mais en voici deux qui ne fonctionnent pas : "Scripting dictionnnary" et la fonction "Split"
truc qui ne fonctionne pas non plus est d'utiliser un nom défini dans une liste de validation.
exemple : dans ton fichier, tu as dans la feuille "concours", une liste de validation pour les parties. Pour que le code de la feuille fonctionne, il faut au lieu du nom "parties", mettre directement "Partie 1; Partie 2; Partie 3" dans la rubrique "liste" de l'option validation. Vu la petite liste, cela ne devrait pas gêner je pense. Je corrige ?
Autre chose, dans la Private sub workbook open, je vois que tu as mis des instructions pour protéger la feuille.
Pourquoi ne fais-tu pas appel à la sub Prot qui se trouve dans le module Podium ? cela éviterait de répéter deux fois les instructions de protection.
La sub prot serait :
Sub Prot()
Dim i As Byte
Dim Aprotéger
Application.ScreenUpdating = False
Aprotéger = Array("Concours", "Inscriptions", "Podium", "PodiumF", "Base") 'feuilles à protéger
For i = 1 To Worksheets.Count
If Not IsError(Application.Match(Worksheets(i).Name, Aprotéger, 0)) Then
Worksheets(i).Protect Password:="dudu", _
DrawingObjects:=True, _
Contents:=True, _
Scenarios:=True, _
Userinterfaceonly:=True
ActiveWindow.DisplayHeadings = False
End If
Next
Sheets("Listes").Visible = False
Sheets("Temp").Visible = False
Sheets("Base").Visible = False
Sheets("Concours").Activate
End SubLa sub private workbook :
Private Sub Workbook_Open()
Dim i As Byte, Aprotéger
With Application
.ScreenUpdating = False
.Calculation = xlCalculationAutomatic
End With
Call Prot
Flag = False 'Dan : à voir si tu dois conserver cela ??
End SubA te relire
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
re Dan,
ici je n'ai pas de "Scripting dictionnnary" ni de "Split"
pour la liste des Parties, elle est évolutive suivant le nombre de parties à jouer et déterminé au départ
il ne faudrait pas avoir une liste figée jusqu'à 6 parties alors qu'on a que 4 parties à jouer, ce qui
provoquerait une erreur.
Ou alors créer cette liste dans la macro "GoX" (bouton "Fin des inscriptions")
(rappel: choix de 3 à 6 parties)
J'ai l'impression que çà va pas être facile !
édit: pour la protection dans Open, normalement on n'a pas à utiliser la macro "Prot",
c'est juste pour moi, la réactiver si besoin (si je déprotège une feuille en programmation)
Claude
Re,
Ok pour la protection dans "Open"
Pour la liste des parties on pourrait la créer par la macro GoX. Comment vois-tu cela ?
Autre solution est de mettre une liste déroulante comme tu l'as fait pour la liste des noms. Cela fonctionne très bien cela et d'autant que la liste de validation est inaccessible si tu figes les volets. (cela n'est pas un souci car on peut aussi faire en sorte que le code règle tout cela.
Ton avis ?
Amicalement