Excel : problème recherche donnée

Résolu/Fermé
Cali_09 - 20 déc. 2007 à 14:59
 Cali_09 - 27 déc. 2007 à 17:36
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
A voir également:

13 réponses

eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
21 déc. 2007 à 19:34
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
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 395
20 déc. 2007 à 15:38
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
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
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
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
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
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
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
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
Personne ne peut m'aider???
0
Ok merci bien pour ce code,

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