Technique

Modérateur : administrateurs généraux

Avatar de l’utilisateur
steff57
Admin.Développement
Admin.Développement
Messages : 978
Inscription : ven. 9 avr. 2004 00:00
Localisation : fr
Contact :

Re: Premier bilan

Messagepar steff57 » dim. 30 janv. 2011 11:51

Je repond a ton MP ici ca seras plus simple pour le suivi

genghis a écrit :Salut Steff. Smile

Pour la méga campagne, j'ai fait quelques outils pour faciliter la gestion des arbitres.
Ils sont sous Excel. Hélas je ne suis pas un spécialiste de cet Outil, ni de VBA pour les macros.

Connais tu cet outil??
Si oui, d'après toi:

1/
Arrow Est il possible de lancer l'execution une macro suivant le résultat d'une cellule ?
Arrow Si oui, comment ?


pour ca la solution que je te propose c est sur la feuille ou tu veut controler la cellule en question

un truc du style

Sub Worksheet_Change(ByVal Target As Range)
'La cellule que tu veut controler ici B4
If Target.Address = "$B$4" Then
'ici le traitement
Else
'
End If
End If
End Sub



genghis a écrit :2/
Arrow Est il possible de créer un objet indexé ,par le résultat d'une cellule, soit dans une cellule, soit en VBA?
Arrow Si oui, quelle est la synthaxe ?

3/
Arrow Dans une cellule, est il possible d'activer une formule dont la synthaxe est issue de la fonction "concatener"?

Voilà si tu peux m'aider sur ces problèmes, le travail des arbitres sera largement facilité. Wink


pour les 2 autres est ce que tu peut etre plus explicite car les termes technique et moi ca fait 2
et je vois pas trop bien ce que tu veut [/quote]

Avatar de l’utilisateur
Cap_Dan
Afien d'Or
Afien d'Or
Messages : 9726
Inscription : jeu. 25 mars 2004 01:00
Localisation : gp
Contact :

Messagepar Cap_Dan » dim. 30 janv. 2011 13:50

Ce sont des chaînes de caractères que l'on concatène, pas des fonctions (d'après moi).

Ce que tu concatènes se retrouve entre guillemets donc même si tu arrives à concaténer = , B1, + et A3 tu obtiendras au mieux "=B1+A3" qui ne sera jamais considérer comme une fonction mais comme une chaine de caractères.

Avatar de l’utilisateur
steff57
Admin.Développement
Admin.Développement
Messages : 978
Inscription : ven. 9 avr. 2004 00:00
Localisation : fr
Contact :

Messagepar steff57 » dim. 30 janv. 2011 14:23

je pourrais avoir le fichier concerné
et me dire ce que vous voulez comme resultats et ou ?

Avatar de l’utilisateur
genghis
Afien d'Or
Afien d'Or
Messages : 3348
Inscription : ven. 11 mai 2007 00:00
Localisation : fr

Messagepar genghis » dim. 30 janv. 2011 15:13

steff57 a écrit :je pourrais avoir le fichier concerné
et me dire ce que vous voulez comme resultats et ou ?


Oui, je t'enverrai les fichiers dans l'après midi.
Gard à l'amateurisme :oops:
Avant ça je n'avais jamais programmé un tel fichier, alors on ne se moque pas, hein!! 8-[ :mrgreen:

Par contre, vu le temps que j'y ai déjà passé et par souci de progresser sur ce domaine, je souhaiterais rester maitre des modifs... Donc avancer à mon rythme, et surtout comprendre ce que l'on fait. :wink:
"En langage clinique, on appelle ça un paranoïaque, en langage militaire un brigadier."
Un taxi pour Tobrouk (1961), M. Audiard.

Avatar de l’utilisateur
steff57
Admin.Développement
Admin.Développement
Messages : 978
Inscription : ven. 9 avr. 2004 00:00
Localisation : fr
Contact :

Messagepar steff57 » dim. 30 janv. 2011 15:21

pas de pb pour moi

tu me dit ce que tu veut je te dit comment et tu le fait

Avatar de l’utilisateur
steff57
Admin.Développement
Admin.Développement
Messages : 978
Inscription : ven. 9 avr. 2004 00:00
Localisation : fr
Contact :

Messagepar steff57 » dim. 30 janv. 2011 18:22

bien recu tes 2 fichiers
commencons par le debut :)

c est un truc de malade 8O ](*,)

sacré boulot =D>

j ai survollé l affaire vite fait 2 chose mon sauté au yeux
1_ dan sle fichier carnet de bord EST je vois zitoun qui a la lettre "R" dans ses mouvements je sais pas ce que ca veut dire mais est ce normal qu il prenne 1 point en bout de colonne si oui cool si non faut modifier ta formule comme suis

Code : Tout sélectionner

=SI(ESTNUM(P14);SI(P14>0;1;0);0)


2_ dans le fichier feuille de calcul
feuille données tout au fond la meteo europeenne
il est vrai que je suis plus en europe en ce moment mais juin, juillet auot est en automne :wink: je sais pas si ca une imortance dans vos calcul ensuite

perso sur ce derneir tableau j aurais mis la premiere colonne en automne la deuxieme en printemps et la 3eme en ete

voila ce que j ai vu sur un tour tres rapide

Avatar de l’utilisateur
genghis
Afien d'Or
Afien d'Or
Messages : 3348
Inscription : ven. 11 mai 2007 00:00
Localisation : fr

Messagepar genghis » dim. 30 janv. 2011 20:12

En réponse à tes remarques:

1_ "R" signifie retranché.
Cela signifie aussi que le joueur a donné un ordre stratégique donc il a le droit à son poinpoint :wink:
Seule l'absence d'ordre stratégique ne donne pas lieu à des points.

ESTNUM= "est numérique" exclue les caractères non numériques de la chaîne de calcul. 8)
Existe t'il un site bien fait où trouver toutes ces instuctions??

2_ Effectivement, c'est un peu incohérent.
Cependant ce n'est que le nom de la table-matrice pour la fonction RechercheV (c'est juste parce que j'ai copié les tableaux).
Ca n'a pas d'incidence sur le resultat, le tableau est bon.

******************************************
Sinon, pour en revenir à ma toute première question:
J'ai essayé ta proposition de l'execution d'une macro par le resultat d'une cellule.
Sub Worksheet_Change(ByVal Target As Range)
'La cellule que tu veut controler ici B4
If Target.Address = "$B$4" Then
'ici le traitement
Else
'
End If
End If
End Sub

Le resultat de l'équation me renvoie toujours "faux", et donc exécute la "zone ELSE". :-k

Ce que je voudrait faire:
Si la cellule "P6" de l'onglet "Calcul OB" est égale à 999.
Ecrire "Infanterie" dans la cellule "C34" et "Faible" dans la cellule "C40" de l'onglet "Tableau CM".
Contrainte: garder l'option "Liste" pour ces deux cellules.
"En langage clinique, on appelle ça un paranoïaque, en langage militaire un brigadier."
Un taxi pour Tobrouk (1961), M. Audiard.

Avatar de l’utilisateur
steff57
Admin.Développement
Admin.Développement
Messages : 978
Inscription : ven. 9 avr. 2004 00:00
Localisation : fr
Contact :

Messagepar steff57 » dim. 30 janv. 2011 21:28

je te fait la macro et te la met ici des que faite

pour le site tu devrais y trouver ton bonheur ici
http://www.developpez.com/
en tout cas moi j y trouve le mien ;)

Avatar de l’utilisateur
genghis
Afien d'Or
Afien d'Or
Messages : 3348
Inscription : ven. 11 mai 2007 00:00
Localisation : fr

Messagepar genghis » dim. 30 janv. 2011 21:55

Merci pour le lien.
Je vois qu'il y a des tuto pour débutant, c'est ce qu'il me faut.

Concernant notre affaire, il y a déjà une macro qui fait ça. Mais elle nécessite un lancement manuel par action sur un bouton (les manettes en haut à droite de l'onglet "Tableau CM").
Or, nos chers arbitre ont la tête en l'air, et oublient régulièrement de s'en servir. :cry:
Il est donc préréfable d'avoir une activation automatique de cette macro, ou tout autre moyen ne réclamant pas leur intervention. :lol:
"En langage clinique, on appelle ça un paranoïaque, en langage militaire un brigadier."
Un taxi pour Tobrouk (1961), M. Audiard.

Avatar de l’utilisateur
steff57
Admin.Développement
Admin.Développement
Messages : 978
Inscription : ven. 9 avr. 2004 00:00
Localisation : fr
Contact :

Messagepar steff57 » dim. 30 janv. 2011 22:51

voila un truc qui fonctionne pas trop mal
je te l ai pas mal commenté pour que tu y vois plus clair

de plus vire les modules vide et renomme tes modules pour que ce soir explicite en les voyant
n hesite pas a utiliser et abuser des commentaires ;) tu seras content de les retrouver quand dans plusieur semaine tu seras obligé de revenir dans ton code on se rappel plus forcement pourquoi on a ecrit certaine chose :D


a mettre dans : Feuil2(Calcul OB)

Code : Tout sélectionner

Sub Worksheet_change(ByVal target As Range)
    'On deprotege la feuille sinon on pet pas modifer les cellules concerné
    ActiveSheet.Unprotect
    'On fait le boulot seulement si la cellule P6 est modifier sinon ca tourne en boucle et ca plante tout
    If target.Address = "$P$6" Then
        'si P6 = 999 on modifie C34 on ne pourras pas modifier l autre a cause de la condition de changement sur P6
        If (Range("P6") = 999) Then
            Range("C34").Select
            ActiveCell.FormulaR1C1 = "Infanterie"
        End If
    'du coup vu que l on vient de modifier c34 on vas se servir d elle pour modifier C40 en verifiant quand meme la valeur de P6 on sais jamais
    ElseIf target.Address = "$C$34" Then
        If (Range("P6") = 999) Then
            Range("C40").Select
            ActiveCell.FormulaR1C1 = "Faible"
        End If
    End If
    'on protege la feuille
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub

Avatar de l’utilisateur
genghis
Afien d'Or
Afien d'Or
Messages : 3348
Inscription : ven. 11 mai 2007 00:00
Localisation : fr

Messagepar genghis » lun. 31 janv. 2011 00:33

Ben je comprends ton code, mais il y a un problème, les cellules cibles ne sont pas sur la même feuille dans mon problème.
Elles sont dans la feuille "Tableau CM".
Et Aussi, C34 est groupée avec D34, C40 avec D40.

j'ai donc essayé ça:

Sub Worksheet_change(ByVal target As Range)
--'On deprotege la feuille sinon on pet pas modifer les cellules concerné
--ActiveSheet.Unprotect
--'On fait le boulot seulement si la cellule P6 est modifier sinon ca tourne en boucle et ca plante tout
--If target.Address = "$P$6" Then
----'si P6 = 999 on modifie C34 on ne pourras pas modifier l autre a cause de la condition de changement sur P6
----If (Range("P6") = 999) Then
--------'ouverture et déprotection de la feuille
--------Sheets("Tableau CM").Select
--------ActiveSheet.Unprotect
--------'Dégroupage de la cellule C34
--------Range("C34:D34").Select
--------With Selection
------------.HorizontalAlignment = xlGeneral
------------.VerticalAlignment = xlCenter
------------.WrapText = False
------------.Orientation = 0
------------.AddIndent = False
------------.IndentLevel = 0
------------.ShrinkToFit = False
------------.ReadingOrder = xlContext
------------.MergeCells = True
--------End With
--------Selection.UnMerge
--------Range("C34").Select
--------ActiveCell.FormulaR1C1 = "Infanterie"
...


Je reste planté systématiquement sur la ligne en jaune avec:
"erreur d'exécution 1004
La methode Select de la classe Range a échouée

Pourtant ces lignes de code fonctionnent très bien dans une de mes macros :-k
"En langage clinique, on appelle ça un paranoïaque, en langage militaire un brigadier."
Un taxi pour Tobrouk (1961), M. Audiard.

Avatar de l’utilisateur
steff57
Admin.Développement
Admin.Développement
Messages : 978
Inscription : ven. 9 avr. 2004 00:00
Localisation : fr
Contact :

Messagepar steff57 » lun. 31 janv. 2011 14:36

le pb majeur de ton truc c est ta zone de liste qui vas pas
tu en as créé une en selectionnant la liste
alors qu il la faudrais via le controle de formulaire
de la tu a une cellule lié ou ta liste renvoi la valeur de ta selection
et a partir de la en modifiant cette valeur par macro on modfie l etat de la liste ainsi que le reste de tes calculs attention c est une valeur numerique donc soir pas mal de changement dans tes calculs soit bien penser la macro pour ne rien avoir d autre a modifier que la liste

Avatar de l’utilisateur
genghis
Afien d'Or
Afien d'Or
Messages : 3348
Inscription : ven. 11 mai 2007 00:00
Localisation : fr

Messagepar genghis » lun. 31 janv. 2011 16:14

steff57 a écrit :le pb majeur de ton truc c est ta zone de liste qui vas pas

Ah...
steff57 a écrit :tu en as créé une en selectionnant la liste

Absolument
steff57 a écrit :alors qu il la faudrais via le controle de formulaire

Tient, je ne savais pas que c'est possible... :?
Je vais rechercher une solution dans ce sens.
steff57 a écrit :de la tu a une cellule lié ou ta liste renvoi la valeur de ta selection

Oui
steff57 a écrit :et a partir de la en modifiant cette valeur par macro on modfie l etat de la liste ainsi que le reste de tes calculs attention c est une valeur numerique donc soir pas mal de changement dans tes calculs soit bien penser la macro pour ne rien avoir d autre a modifier que la liste

Certes, mais la macro écrit une valeur comprise dans la liste.
Si ce n'est pas le cas d'ailleurs, il me semble que la cellule reagit en affichant une erreur.
Cependant, ma macro "UT_Axe" fonctionne correctement sans limitation d'utilisation. Ma seule préoccupation est qu'elle ne se lance pas automatiquement, et que donc elle peut être oubliée.

Bon je m'y remets cet aprés midi: Résultat ce soir.
Merci pour tes réponses et tes tuyaux! :)
"En langage clinique, on appelle ça un paranoïaque, en langage militaire un brigadier."
Un taxi pour Tobrouk (1961), M. Audiard.

Avatar de l’utilisateur
steff57
Admin.Développement
Admin.Développement
Messages : 978
Inscription : ven. 9 avr. 2004 00:00
Localisation : fr
Contact :

Messagepar steff57 » lun. 31 janv. 2011 16:41

bas si elle fonctionne :) on a qu a faire simplement :

Code : Tout sélectionner

Sub Worksheet_change(ByVal target As Range)
--'On fait le boulot seulement si la cellule P6 est modifier sinon ca tourne en boucle et ca plante tout
--If target.Address = "$P$6" Then
----'si P6 = 999 on modifie C34 on ne pourras pas modifier l autre a cause de la condition de changement sur P6
----If (Range("P6") = 999) Then
-------UT_Axe
----End If
--End If
End Sub


j ai pas testé mais ca devrai fonctionner
au pire faut peut etre mettre une selection de la feuille "Tableau CM" si ca ne l est pas dans ta fonction

Avatar de l’utilisateur
genghis
Afien d'Or
Afien d'Or
Messages : 3348
Inscription : ven. 11 mai 2007 00:00
Localisation : fr

Messagepar genghis » lun. 31 janv. 2011 17:55

steff57 a écrit :bas si elle fonctionne :) on a qu a faire simplement :

Code : Tout sélectionner

Sub Worksheet_change(ByVal target As Range)
--'On fait le boulot seulement si la cellule P6 est modifier sinon ca tourne en boucle et ca plante tout
--If target.Address = "$P$6" Then
----'si P6 = 999 on modifie C34 on ne pourras pas modifier l autre a cause de la condition de changement sur P6
----If (Range("P6") = 999) Then
-------UT_Axe
----End If
--End If
End Sub


j ai pas testé mais ca devrai fonctionner
au pire faut peut etre mettre une selection de la feuille "Tableau CM" si ca ne l est pas dans ta fonction


=D>
Pourquoi faire compliqué??
Voila un problème résolu! \:D/
"En langage clinique, on appelle ça un paranoïaque, en langage militaire un brigadier."
Un taxi pour Tobrouk (1961), M. Audiard.

Avatar de l’utilisateur
steff57
Admin.Développement
Admin.Développement
Messages : 978
Inscription : ven. 9 avr. 2004 00:00
Localisation : fr
Contact :

Messagepar steff57 » lun. 31 janv. 2011 19:46

oui des fois on cherche bien compliqué pour pas grand chose :)

de plus ne connaissant pas du tout ton truc ca aide pas :)


Revenir vers « Arbitres-Méga-Campagne »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 33 invités