Tri dans un tableau

E

Eric

Guest
Bonjour à tous,

Par une succession de calculs, j'obtiens un tableau, d'une 50è de lignes et 170 colonnes, rempli de chiffres.
Je souhaite extraire sur une nouvelle colonne uniquement les chiffres contenus entre 2 valeurs (les valeurs comprises entre 20 et 350 par exemple).
Qqu'un aurait-il une idée pour la procédure ?
 
T

Thierry

Guest
Bonjour Eric,

C'est bien de décrire ton tableau, mais par contre :

"extraire sur une nouvelle colonne uniquement les chiffres contenus entre 2 valeurs "

Tu veux extraire quoi sur une seule nouvelle colonne ? n'importe quel chiffre (Dont la valeur est entre 20 et 350) sur toute la plage A1:FN50 ? ou sur une colonne précise...

Vu que c'est dimanche et que je me repose, si c'est une recherche sur une seule colonne (ici "B") un simple IF combiné avec un AND suffira en mettant cette formule sur la nouvelle colonne :

=SI(ET(B4>=20;B4<=350);B4;"")

Si tu veux chercher la même chose sur toute ta plage, là faudrait du VBA...

Tiens nous au courrant
Bon Dimanche
@+Thierry
 
E

Eric

Guest
Bonjour Thierry,

Merci pour ta réponse

Je souhaite effectivement sélectionner toute la plage A1:FN50 pour en
extraire sur la colonne HA tous les chiffres compris entre 2 valeurs
D'avance merci

Désolé pour cette réponse tardive, mais j'ai 10 heures d'avance sur la Métropole

Bonne soirée
@+
Eric
 
T

Thierry

Guest
Bonsoir Eric, Bonsoir les ami(e)s, bonsoir le Forum

Bon alors pour ton truc, j'ai pensé un truc comme çà...
mais bon pas sur la Colonne "HA" car elle est comprise à l'intérieur de ta plage de recherche.... "A1:FN50"... Donc tu as dû te planter dans ton post ou je n'ai rien capté....

Malgré tout je me pose la question à quoi cela va-t'il te servir d'avoir tes données en vrac cette colonne en FO... (?)
(Elle seront listée dans l'ordre où les valeurs sont trouvées ligne par ligne...)

Bon voilà un code qui (entre autres solutions) devrait le faire...

Sub Recherche()
Dim LigneCollect As Integer
Dim LigneMatch As Integer
Dim ColonneMatch As Integer
Dim ValMin As Integer
Dim ValMax As Integer
On Error Resume Next
ValMin = 20
ValMax = 350

Range("A1:FN50").Select
For LigneMatch = 1 To 50
For ColonneMatch = 1 To 170
If Cells(LigneMatch, ColonneMatch).Value >= ValMin _
And Cells(LigneMatch, ColonneMatch).Value <= ValMax Then
LigneCollect = Range("FO65536").End(xlUp).Row + 1
Sheets(1).Range("FO" & LigneCollect).Value = _
Cells(LigneMatch, ColonneMatch).Value
End If
Next ColonneMatch
Next LigneMatch
Range("FO" & LigneCollect).Select
End Sub

Tiens nous au courant...
Bonne Nuit
@+Thierry
 
E

Eric

Guest
Bonjour Thierry,

merci pour ta réponse,

J'ai un message d'erreur : "erreur de compilation; End sub attendu"
alors que j'ai mis un End sub en dernière ligne....

voici ma macro telle qu'écrite dans mon fichier

'
Sub Recherche()
Dim LigneCollect As Integer
Dim LigneMatch As Integer
Dim ColonneMatch As Integer
Dim ValMin As Integer
Dim ValMax As Integer
On Error Resume Next
ValMin = 20
ValMax = 350

Range("A1:FN50").Select
For LigneMatch = 1 To 50
For ColonneMatch = 1 To 170
If Cells(LigneMatch, ColonneMatch).Value >= ValMin _
And Cells(LigneMatch, ColonneMatch).Value
Selection.ClearContents
End Sub
 
T

Thierry

Guest
Bonjour Eric,

Euh oui... Enfin Non!

Tu n'as qu'à copier l'intégralité du code de mon post non ? Jusqu'au End Sub... Il y est ? non ? tu ne le vois pas ? As tu un problème d'affichage de ce site ?

Bon sinon je ne comprends rien au code que tu as posté...
Qu'est que çà vient faire au milieu "Selection.ClearContents" ...???

Ce ne doit pas pas reporter grand chose...

Bon ben je vais travailler là
Bonne journée ou nuit pour toi...
@+Thierry
 
E

Eric

Guest
Bonjour Thierry,

Je suis vraiment désolé,
J'ai modifié lignes et colonnes mais
J'ai toujours mon message d'erreur : "erreur de compilation; End sub attendu"


Sub Recherche()
Dim LigneCollect As Integer
Dim LigneMatch As Integer
Dim ColonneMatch As Integer
Dim ValMin As Integer
Dim ValMax As Integer
On Error Resume Next
ValMin = K1
ValMax = K2

Range("P12:FS51").Select
For LigneMatch = 12 To 51
For ColonneMatch = 16 To 175
If Cells(LigneMatch, ColonneMatch).Value >= ValMin _
And Cells(LigneMatch, ColonneMatch).Value <= ValMax Then
LigneCollect = Range("FO65536").End(xlUp).Row + 1
Sheets(1).Range("G" & LigneCollect).Value = _
Cells(LigneMatch, ColonneMatch).Value
End If
Next ColonneMatch
Next LigneMatch
Range("G" & LigneCollect).Select
End Sub
 
S

STéphane

Guest
bonjour


tu dois avoir un problème avec le symbole "underscore" (espace souligné => _) utilisé dans le code qui permet de faire des retours à la ligne dans les instructions.

pour faire le retour à la ligne

tu écris ton texte abcdeefskjlfsjf puis un espace, puis l'underscore _ un autre espace et tu appuies sur shift et entrée en même temps, ensuite tu peux continuer d'écrire ton code.

bye
Stéphane
 

Discussions similaires

Statistiques des forums

Discussions
314 655
Messages
2 111 604
Membres
111 217
dernier inscrit
aladinkabeya2