Modifications en masse de formule Excel

Fermé
kloy -  
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

1 réponse

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour

    Ou se trouve "P"ou "F"? B12, B19 ?
    0
    1. kloy
       
      Il se trouve potentiellement effectivement dans l'une des cellules de la feuille RES

      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
      0
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Message annulé: erreur
      0
    3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      re,
      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 Function  
      

      Suivant 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
      0