Selection multilignes VBA - VB/VBA/VBS - Programmation
Marsh Posté le 15-11-2006 à 12:27:05
A essayer et adapter sans savoir si c'est vraiment plus rapide
|
Marsh Posté le 15-11-2006 à 14:27:43
Merci bp pour la réponse, cela m'a amené en fait un autre véritable pb. En réalité, ce qui prend du temps est la comparaison entre 2 listes de 6000 éléments. Comment faire au plus rapide pour cela? (J'ai l'habitude de faire du Matlab et ça pose pas de pb car il a une puissance de calcul suffisament puissante, mais la, rien qu'une boucle sur 6000 éléments et ça prend au moins 1 min)
Mon Code :
Private Sub CommandButton1_Click()
Dim Rng As Range
Range("A2:A6157" ).Select
For Each req_traite In Selection
If req_traite.Value <> "" Then
With Worksheets(2).Range("a1:a5292" )
Set c = .Find(What:=req_traite, LookIn:=xlValues, LookAt:=xlWhole)
If Not c Is Nothing Then
If Rng Is Nothing Then
Set Rng = req_traite
Else
Set Rng = Union(Rng, req_traite)
End If
End If
End With
End If
Next
Rng.Select
Selection.EntireRow.Hidden = True
End Sub
Marsh Posté le 15-11-2006 à 15:05:43
A essayer et adapter
Compare A et B
Met en C les valeurs de B qui ne sont pas dans A
|
sur un test de 6000 lignes environ 10 s
Marsh Posté le 16-11-2006 à 15:29:31
Merci bp, mais j'ai encore un pb.
Dans la feuille 1, j'ai :
Set rA = Sheets(1).Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp))
Mais pk je peux pas faire la même chose pour récuperer les données de la première colonne de la feuille 2 avec :
Set rB = Sheets(2).Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp))
Marsh Posté le 16-11-2006 à 15:57:54
|
Marsh Posté le 15-11-2006 à 11:01:44
Bonjour à tous, je débute en Excel et j'ai un problème de sélection de plusieurs lignes sous Excel.
Comment fait-on pour sélectionner 500 lignes d'un coup sous Excel?
Avec quelques lignes, j'obtiens :
Range("14:14,16:16,21:21,24:24,26:26" ).Select
Mais pour 500 lignes, la commande est trop longue et ça passe plus.
(L'idée serait de stocker les numeros des lignes dans une variable et de tout sélectionner en une commande. Actuellement, mon code est le suivant, mais il est bp trop lent :
For ligne = 2 To 6157
' Masquage des lignes
req_traite = Cells(ligne, 1)
With Worksheets(2).Range("a1:a5292" )
Set c = .Find(What:=req_traite, LookIn:=xlValues, LookAt:=xlWhole)
If Not c Is Nothing Then
'Range(ligne).EntireRow.Hidden = True
Cells(ligne, 1).EntireRow.Select
Selection.EntireRow.Hidden = True
End If
End With
Next
Application.ScreenUpdating = True
Merci