Excel : problème recherche donnée

Résolu
Cali_09 -  
 Cali_09 -
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. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
  2. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    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
  3. Cali_09
     
    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
  4. néné
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Cali_09
     
    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
  7. néné
     
    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
  8. Cali_09
     
    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
  9. néné
     
    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
  10. néné
     
    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
  11. alesani
     
    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
  12. Cali_09
     
    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
  13. Cali_09
     
    Ok merci bien pour ce code,

    Il est exactement ce que je cherche Bonne fêtes de fin d'année
    0