Modifications en masse de formule Excel
Fermé
kloy
-
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai une usine a gaz sous excel pour une asso sportive qui donne des editions de résultats de rencontres...
en gros j'ai a peu près 400 cellules avec des formules de ce type
=SI(ET(RES!$B12>RES!$B19;RES!$B12<>"");1;0)+
SI(ET(RES!$C12>RES!$C18;RES!$C12<>"");1;0)+
SI(ET(RES!$D12>RES!$D17;RES!$D12<>"");1;0)+
SI(ET(RES!$E12>RES!$E16;RES!$E12<>"");1;0)+
SI(ET(RES!$F12>RES!$F15;RES!$F12<>"");1;0)+
SI(ET(RES!$G12>RES!$G14;RES!$G12<>"");1;0)+
SI(ET(RES!$H12>RES!$H13;RES!$H12<>"");1;0)-H12
pour situer le truc, RES!$B12 et RES!$B19 sont les résultats de la 1er rencontre : ca ressemble à 12 / 18
Mon soucis est qu'aujourd'hui, on me dit que s'il y a forfait ou pénalité, ce ne sera plus un chiffre, mais une lettre F ou P et cela entraine automatiquement une valeur de 0
du coup, pour déterminer les valeurs, j'ai donc penser a la fonction N(), ce qui me donnerait
=SI(ET(N(RES!$B12)>N(RES!$B19);RES!$B12<>"");1;0)+
SI(ET(N(RES!$C12)>N(RES!$C18);RES!$C12<>"");1;0)+
SI(ET(N(RES!$D12)>N(RES!$D17);RES!$D12<>"");1;0)+
SI(ET(N(RES!$E12)>N(RES!$E16);RES!$E12<>"");1;0)+
SI(ET(N(RES!$F12)>N(RES!$F15);RES!$F12<>"");1;0)+
SI(ET(N(RES!$G12)>N(RES!$G14);RES!$G12<>"");1;0)+
SI(ET(N(RES!$H12)>N(RES!$H13);RES!$H12<>"");1;0)-H12
Y'a-t-il un moyen quelconque d'automatiser ce remplacement ?
J'ai testé
De désactiver le calcul automatique et de faire un rechercher/remplacer de
'ET(RES' par 'ET(N(RES'
(je comptais faire ensuite '>RES' par ')>N(RES' et finir par remplacer ';RES' par ');RES'
mais il me met une erreur "Vous avez tape un nombre trop important d'arguments pour cette fonction' lors de la première étape du remplacement....
Je suis sous excel 2002
Merci d'avance
J'ai une usine a gaz sous excel pour une asso sportive qui donne des editions de résultats de rencontres...
en gros j'ai a peu près 400 cellules avec des formules de ce type
=SI(ET(RES!$B12>RES!$B19;RES!$B12<>"");1;0)+
SI(ET(RES!$C12>RES!$C18;RES!$C12<>"");1;0)+
SI(ET(RES!$D12>RES!$D17;RES!$D12<>"");1;0)+
SI(ET(RES!$E12>RES!$E16;RES!$E12<>"");1;0)+
SI(ET(RES!$F12>RES!$F15;RES!$F12<>"");1;0)+
SI(ET(RES!$G12>RES!$G14;RES!$G12<>"");1;0)+
SI(ET(RES!$H12>RES!$H13;RES!$H12<>"");1;0)-H12
pour situer le truc, RES!$B12 et RES!$B19 sont les résultats de la 1er rencontre : ca ressemble à 12 / 18
Mon soucis est qu'aujourd'hui, on me dit que s'il y a forfait ou pénalité, ce ne sera plus un chiffre, mais une lettre F ou P et cela entraine automatiquement une valeur de 0
du coup, pour déterminer les valeurs, j'ai donc penser a la fonction N(), ce qui me donnerait
=SI(ET(N(RES!$B12)>N(RES!$B19);RES!$B12<>"");1;0)+
SI(ET(N(RES!$C12)>N(RES!$C18);RES!$C12<>"");1;0)+
SI(ET(N(RES!$D12)>N(RES!$D17);RES!$D12<>"");1;0)+
SI(ET(N(RES!$E12)>N(RES!$E16);RES!$E12<>"");1;0)+
SI(ET(N(RES!$F12)>N(RES!$F15);RES!$F12<>"");1;0)+
SI(ET(N(RES!$G12)>N(RES!$G14);RES!$G12<>"");1;0)+
SI(ET(N(RES!$H12)>N(RES!$H13);RES!$H12<>"");1;0)-H12
Y'a-t-il un moyen quelconque d'automatiser ce remplacement ?
J'ai testé
De désactiver le calcul automatique et de faire un rechercher/remplacer de
'ET(RES' par 'ET(N(RES'
(je comptais faire ensuite '>RES' par ')>N(RES' et finir par remplacer ';RES' par ');RES'
mais il me met une erreur "Vous avez tape un nombre trop important d'arguments pour cette fonction' lors de la première étape du remplacement....
Je suis sous excel 2002
Merci d'avance
A voir également:
- Modifications en masse de formule Excel
- Suivi des modifications word - Guide
- Formule si et excel - Guide
- Formule moyenne excel plusieurs colonnes - Guide
- Renommer des fichiers en masse - Guide
- Mise en forme conditionnelle excel formule - Guide
j'ai testé avec ma deuxième formule et cela me donne satisfaction, il faut juste que je le fasse sur les 399 autres :)
Kloy
une fonction personnalisée réduisant le boulot. l'architecture doit être similaire: N sur 1 ligne
avec décalage De N lignes et remontée en escalier vers la ligne (N=7 dans ton exemple)
Function compter_points(plage As Range, debut As Range) As Byte Application.Volatile fin = plage.Count - 1 col = plage.Column lig1 = plage.Row Lig2 = debut.Row For cptr = 0 To fin If IsNumeric(Cells(lig1, col + cptr)) And IsNumeric(Cells(Lig2 - cptr, col + cptr)) Then somme = somme + (Cells(lig1, col + cptr) > Cells(Lig2 - cptr, col + cptr)) End If compter_points = -somme - (Cells(lig1, col + cptr) Next End FunctionSuivant la disposition de ton usine à gaz il est peut-être possible de faire une macro ==> boulot de saisie tendant vers zéro... :-)
edit 18:45 pris en compte "H12" à la fin