Excel : problème recherche donnée

Résolu
Bonjour,

j'ai un problème avec Excel et ne sais pas du tout comment le résoudre.

J'ai un tableau de 42 colonnes qui commence dans la colonne B par contre il y a un nombre indéterminé de ligne.

Dans ce tableau, je veux sur chaque, ligne sauf la première, rechercher la première valeur négative et ensuite en fonction de son emplacement remplir la cellule A de cette ligne avec la valeur de la ligne 1 de la colonne trouvée.

J'espère que mon problème est clair.

Merci de votre aide à tous

13 réponses

  1. Ok merci bien pour ce code,

    Il est exactement ce que je cherche Bonne fêtes de fin d'année
    0
    1. Contributeur
      Bonjour,

      A saisir dans la feuille ou dans un module:
      Sub Neg1()
          Dim rep As Variant, i As Long
          For Each cel In Selection
              rep = ""
              For i = 1 To 42
                  If cel.Offset(0, i) < 0 Then
                      rep = Cells(1, i + 1)
                      Exit For
                  End If
              Next i
              cel.Value = rep
          Next cel
      End Sub

      Tu sélectionnes toutes les cellules en colonne A où tu veux récupérer l'information et tu lances la macro

      eric

      PS: et si tu veux éliminer le 1er caractère ou les 3 premiers pke tu as S1 ou Sem1 tu remplaces
      rep = Cells(1, i + 1)
      par
      rep =Mid(Cells(1, i + 1), 2, 10)
      ou Mid(Cells(1, i + 1), 4, 10)
      1
      1. Merci néné pour ce code.

        Mais j'ai un autre problème, je pensais pouvoir l'adapter à mon fichier mais je ne peux pas.
        Voici mon problème

        Ma décroissance des stocks est donc un fichier Excel mais avec une partie sur la gauche de mon tableau ou sont inscrite les caractéristique des produits. Jusque là pas de problème pour adapter la macro. Cependant en-dessous de toutes mes ligne de caractéristiques il y a des lignes de commentaires. Lorsque je lance la macro, la première chose qu'il fait est de mettre à zéro toute la colonne et ensuite il effectue la recher du nombre négatif sur les 5000 lignes. Alors que moi ce que je souhaite, c'est qu'il identifie si il y a ou pas de décroissance des stocks et ensuite il mette les cellules de la colonne A concerné à zéro et pour finir qu'il recherche la date de rupture de tout les produit présent sur cette feuille.

        J'espère que mon problème est un peu plus clair.

        Merci d'avance de votre aide
        0
        1. Bonjour,
          j'ai une license de OFFICE 2003 pro et lorsque je l'installe sur mon vista pro il l'installe mais lors du demarage du logiciel word ou excel il me di que la version n'est pas compatible et le plus drole c que le logiciel s'ouvre s'y j'appuie sur ok.

          Quelqu'un a t'il une solution
          0
          1. Bonjour,

            annule la précédente

            Sub valider()
            '
            ' Macro1 Macro
            ' Macro enregistrée le 20/12/2007 par ROBERT René http://utilsfr.new.fr

            Application.ScreenUpdating = False
            Columns("A:A") = ""
            For l = 2 To 5000
            Range("b" & l & ":aq" & l & "").Select
            For Each c In Selection
            c.Select
            If c < 0 Then
            c = ActiveCell.Address
            c = Left(c, 2)
            semaine = Range("" & c & "1").Value

            r = ActiveCell.Row
            Range("a" & r & "").Value = semaine
            Exit For
            End If

            Next c

            Next l
            Application.ScreenUpdating = True
            Range("a1").Select
            End Sub
            0
            1. Sub valider()
              '
              ' Macro1 Macro
              ' Macro enregistrée le 20/12/2007 par ROBERT René http://utilsfr.new.fr

              Application.ScreenUpdating = False
              Columns("A:A") = ""

              Range("b2:aq5000").Select
              For Each c In Selection
              c.Select
              If c < 0 Then
              c = ActiveCell.Address
              c = Left(c, 2)
              semaine = Range("" & c & "1").Value

              r = ActiveCell.Row
              Range("a" & r & "").Value = semaine
              End If
              exit sub
              Next
              Application.ScreenUpdating = True
              Range("a1").Select
              End Sub
              0
              1. Merci néné pour ce code, mais il y a un problème.

                Il me donne la valeur de la dernière colonne alors que moi j'aimerais avoir la première semaine ou le stock est inférieur à zéro.

                Si tu sais comment modifier ton code pour obtenir ce résultat?

                Merci d'avance
                0
                1. Voici je pense la macro qu'il te faut

                  Sub valider()
                  '
                  ' Macro1 Macro
                  ' Macro enregistrée le 20/12/2007 par ROBERT René http://utilsfr.new.fr

                  Application.ScreenUpdating = False
                  Columns("A:A") = ""

                  Range("b2:aq5000").Select
                  For Each c In Selection
                  c.Select
                  If c < 0 Then
                  c = ActiveCell.Address
                  c = Left(c, 2)
                  semaine = Range("" & c & "1").Value

                  r = ActiveCell.Row
                  Range("a" & r & "").Value = semaine
                  End If
                  Next
                  Application.ScreenUpdating = True
                  Range("a1").Select
                  End Sub
                  0
                  1. Alors il s'agit d'analyser rapidement une décroissance des stocks.

                    Donc si on prend le stock d'un produit, il décroit jusqu'à devenir inférieur à zéro. Dans le haut du tableau, il y a les semaines de l'année.

                    Le but est de récupérer dans la colonne A la numéro de la semaine ou le produit est inférieur à zéro. Cette étape doit ce répéter pour chaque ligne sachant que le nombre de produit évolue

                    Voila, j'espère que ces infos permettront de faire une macro.

                    Merci d'avance
                    0
                    1. Bjr

                      Peut tu donner un exemple de ce qui va être par exemple dans la colonne A

                      Car je pense qu'il faut effectivement une macro
                      0
                      1. Merci pour l'idée mais je pense qu'il y a beaucoup plus simple. Maintenant reste à savoir quoi et comment...

                        Je pense qu'il faudrait passer par une macro plutot que par une formule. Mais comme je suis débutant je ne maitrise pas du tout le langage.

                        Alors merci pour toute info de ce coté la
                        0
                        1. Contributeur
                          Bonjour
                          J'attend avec interet que l'on vous propose mieux, mais pour ma part et pour l'instant,je ne vois que la solution ci dessous, un peu laborieuse, mais qui marche
                          Prenez 6 colonne hors champ, mettonspour l'exemple:EA,EB,EC,ED,EF
                          en EA2:
                          =si(B2<0,$B$1;si(C2<0;$C$1;si(D2<0;$D$1;si(E2<0;$E$1;si(F2<0;$F$1;si(G2<0;$G$1;si(H2<0;$H$1;EB2)))))))
                          en EB
                          SI(I2<0;$I$1;si(J2<0;$J$1;si(K2<0;$K$1;si(L2<0;$L$1;si(M2<0;$M$1;si(N2<0;$N$1;si(O2<0;$O$1;EC2)))))))
                          Et ainsi de suite en renvoyant à la fin de la formule à la cellule suivante, jusqu,à épuisement de votre tavbleaujusqu'à la colonne d'après sachant qu'Excel n'admet que 7 si l'un derriére l'autre dans la même formule.Il faut donc un peu de patience pour les renter et beaucoup de soins pour respecter les
                          "" ; $ et parenthèses, qui elles, doivent être au même nombre dans les deux sens.

                          Il vous suffira après:
                          de tirer ces formules sur la hauteur du champ
                          De placer dans la colonne A à chaque ligne l'égalité avec la colonne EA
                          A2=EA2
                          Bon courage, peut être vous proposera t on plus facile!Pour ma part, j'y réfléchi encore un peu et je reviens vous voir si je trouve mieux

                          BCRDLMNT
                          0