Extraire la premiere valeur négative excell

robin -  
 robin -
Bonjour,
je ne maitrise pas du tout le code excel pour creer une macro et j'ai des fichiers a analyser sous excel (2007) , dans chaque fichier il y a une colonne de position en degrés (obtenue par une formule de multiplication de deux cellules il parait que c est important de le dire...) et a coté une colonne de nombres positifs sauf deux séries de valeurs négatives, et je voudrais pouvoir trouver directement la premiere valeur négative de chacune de ces séries et la valeur de position correspondante (et les faire copier coller directement en haut du fichier pour pouvoir en faire un nouveau tableau).
Chaque fichier comporte au moins 1500 valeurs par colonne...
merci d avance
Robin

4 réponses

  1. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Salut,

    Si j'ai bien compris, tu cherche à afficher la première valeur inférieure à 0 parmis des valeurs positives et négatives

    formule matricielle à confirmer en appuyant en même temps sur Ctrl, Shift et Entrée
    =MAX(SI(A1:A30<0;(A1:A30);""))

    si tu le fais correctement, la formule se mettra entre {}

    comme ceci
    {=MAX(SI(A1:A30<0;(A1:A30);""))}

    et si tu souhaites retrouver la première valeur négative 0 compris ajoute = entre < et 0 comme ceci <=0
    A+
    Mike-31

    Une période d'échec est un moment rêvé pour semer les graines du savoir.
    0
    1. robin
       
      merci de ta rep
      en fait je cherche la cellule correspondante (de la colonne E) à la premiere cellule negative d une colonne (de la colonne B), le probleme etant qu'il y a deux séries négatives par fichier, et j aimerais avoir la cellule correspondante a la premiere cellule negative de chaque série.
      0
  2. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    Difficile à cerner, pourrais tu mettre ton fichier sur un lien sans notes confidentielles, avec ce lien

    https://www.cjoint.com/
    0
  3. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    pour la première formule, le chiffre en vert n'est pas le premier négatif de la liste, c'est celui qui est sur la ligne inférieure idem pour la deuxième

    et la formule est

    =RECHERCHEV(MAX(SI(C23:C1722<0;(C23:C1722);""));C37:E1722;3;0)
    formule matricielle à confirmer Ctrl+Shift+Entrée)

    pour la seconde valeur, soit tu limites chaque zone de recherche
    première formule
    =RECHERCHEV(MAX(SI(C23:C556<0;(C23:C556);""));C37:E556;3;0)
    deuxième formule
    =RECHERCHEV(MAX(SI(C556:C1722<0;(C556:C1722);""));C556:E1722;3;0)

    ou on recherche une formule plus complexe si les plages sont variables

    A+
    Mike-31

    Une période d'échec est un moment rêvé pour semer les graines du savoir.
    0
    1. robin
       
      merci bcp de tn aide (il me semble que le chiffre en vert est le premier negatif de la liste (pas forcément le premier ou les valeurs changent mais bien le premier négatif...) et ensuite oui les plages changent constamment étant donné que les valeurs négatives correspondent à un moment ou les sujets d une etude appuient sur un bouton poussoir(donc jms au mm moment......dsl si je te fais chercher des trucs encore plus complexes!!!)
      0
    2. robin
       
      ta formule est tres interessante...mais elle me donne a chaque fois la premiere valeur minimale je pense(la cellule en dessous de celle que je voudrais avoir a chaque fois...c presque parfait en tt cas...je pourrais me debrouiller avec ca si la cellule donnée correspondait je m arrangerais pour séparer les plages de donnée et balancer les formule dans tous les tableaux que je dois analyser)
      0
  4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,

    j'ai hésité avec des matricielles sur 1500 lignes

    Ci joint macro avec le moyens du bord: fichier illisible pour les gens n'ayant pas les moyens de se payer office 2007
    valable quelque soit le nombre de groupes négatifs

    Const lig As Byte = 2 'ligne de départ 
    Sub premiers_negatifs() 
    Dim derlig As Integer 
    Dim liste, retour 
    Dim cptr As Integer, cptr_t As Byte 
    
    derlig = Range("B3000").End(xlUp).Row 
    ReDim retour(1, 0) 
    liste = Application.Transpose(Range("B" & lig & ":B" & derlig).Value) 
    
    For cptr = 1 To UBound(liste) 
        If cptr = UBound(liste) Then Exit For 
        If liste(cptr) >= 0 And liste(cptr + 1) < 0 Then 
        ReDim Preserve retour(1, cptr_t) 
        retour(0, cptr_t) = liste(cptr + 1) 
        retour(1, cptr_t) = "B" & cptr + lig 
        cptr_t = cptr_t + 1 
        End If 
    Next 
    Application.ScreenUpdating = False 
    Range("E" & lig).Resize(cptr_t, 2) = Application.Transpose(retour) 
    End Sub


    piece jointe:
    http://www.cijoint.fr/cjlink.php?file=cj201010/cijtbmLP4y.xls

    Pour Mike31:
    salut,
    vaut mieux passer par cijoint.fr que par cjoint; avec cijoint.fr, on peut lire les fichiers 2007 avec la visionneuse microsoft
    Michel
    0
    1. robin
       
      je ne dois pas utiliser excel correctement...puisqu'il me repond erreur d'execution 1004(c'est la premiere fois que j'utilise les macros...et dire que dans les cours g eu des cours d'excel l'an dernier et que le prof ne sait pas les utiliser non plus.......)merci de votre aide en tout cas.
      0
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      re,

      sur quel classeur as tu essayé ? le tien ou le mien ?

      sur quelle ligne se produit l'erreur ? tu vas dans VBE par Alt+F11, tu lances la macro par execution -executer sub et tu regardes où ca s'arr^te

      tu peux remettre en pièce jointe en enregistrant au format xl 97-2003
      0
    3. robin
       
      j ai essayé sur le mien ca ne marche pas ca me dit erreur 1004 alors que sur le tien ca marche c est la derniere ligne du copier coller qui ne marche pas apparement (celle qui apparait en surligné en jaune sur le debogueur) mais sur ton classeur ca ne pose aucun probleme pour trouver les cellules qu il faut...j abuse encore un peu est ce qu il serait possible avec la meme macro de copier coller les cellules qui correspondent d une autre colonne en plus de celle ci (colonne E en plus de la colonne B dans mon classeur...en plus de la cellule choisie)
      http://www.cijoint.fr/cjlink.php?file=cj201010/cijeqk9MR0.xlsx (excel 2007)
      http://www.cijoint.fr/cjlink.php?file=cj201010/cijmmDHgOA.xls (excel 97 - 2003)
      0
    4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Bonjour,
      tu demandes les 1° négatifs.
      Dans ta colonne C tu as plusieurs changements (onze) de positif à négatif par ex lignes 534,538,540, 543....
      et non 2 comme tu l'indiques (vert et rouge)
      alors, comment détermines tu la valeur rouge ?????

      ci joint ton classeur avec les lignes en question...
      http://www.cijoint.fr/cjlink.php?file=cj201010/cijH43P3zY.xls
      0
    5. robin
       
      ah mince c'est vrai que le voltage fluctue autour de 0 lorsque le sujet appuie, la valeur rouge est donc le 1er négatif de la deuxieme série (apres que le voltage soit revenu a 1,3.....).je ne sais pas si c'est mieux expliqué. ca devrait etre le premier négatif au dela de la 1000eme cellule normalement dans tous les fichiers.
      0