Sélection ligne dans lignes filtrées - VB/VBA/VBS - Programmation
Marsh Posté le 08-03-2007 à 15:48:41
lasapiniere a écrit : sélectionner la cellule enligne 3 et colonne ?? des lignes visible. |
tu peux éditer ton post, je ne comprends pas ton pb stp...
Marsh Posté le 09-03-2007 à 11:47:01
A Jpcheck : Colonne 2, je suppose.
Le problème c'est que son code ne prend pas en compte le pré-filtre.
A lasapiniere :
Peux-tu nous dire quel est le critère qui fait que tu choisis cette cellule contenant "9" plutot qu'une autre :
En effet, vu que le "SpecialCells(xlCellTypeVisible).Item..." ne semble pas fonctionner, soit il faut que tu ointègres ta condoition de sélection dans ton code VBA (de type "if blabla then bloblo" ) ou, s'il s'agit d'un choix arbitraire et unique (genre "toujours le ligne 10 et colonne 2" ), alors tu écris "cells(10,2)" et point.
Marsh Posté le 09-03-2007 à 12:49:34
l'nformation que je cherche récupérer se trouve toujours au même emplacement sur un nombre de ligne défini, je m'explique :
- quand j'applique mon filtre sur la colonne 1, le filtre récupère à chaque fois X lignes quelque soit la valeur de mon filtre (car ma valeur est répétée X fois en colonne 1 avec des infos autres sur les autres colonnes)
- je cherche à récupérer la valeur de la cellule se trouvant ligne 2 et colonne 2 des lignes filtrées
ex
colonne A colonne B
1 TOTO 28
2 TOTO 42
2 TATA 64 dans ce cas quand je filtre TATA, je dois
4 TATA 25 récupérer l'info 25. valeur se trouvant en
5 TITI 16 ligne 2 (des lignes filtrées) et colonne 2
6 TITI 23
7
en espérant être plus claire,
Marsh Posté le 09-03-2007 à 16:37:57
Bonsoir,
pour t'aider:
monarticle = "07-01-003"
Range("a1" ).AutoFilter Field:=1, Criteria1:=monarticle
Dim C As Range, Adr
With ActiveSheet.AutoFilter.Range.Columns(1)
Set C = .Columns(1).Find("*" )
MsgBox C.Row
Set C = .FindNext(C)
MsgBox C.Row
End With
tu verras que le deuxième N° de row (2eme msgbox) est celui de la 2eme ligne visible donc cells(C.row,2) contient la valeur recherchée
Cordialement
(Adaptation d'une info sur excellabo)
Marsh Posté le 12-03-2007 à 17:11:13
Bonjour seniorpapou,
je vois qur tu te souviens de m apremière demande, fichier opérationnel grace à ton aide précieuse et je tiens à t'en remercier.
Concernant cette demande ce que je souhaite, mais je ne sais pas si cela est réalisable, c'est :
lorsque j'applique mon filtre avec un N° de devis (forcément 7 lignes car 1 devis = 7 lignes), je souhaite vérifier si dans la cellule (se trouvant en position colonne 2 et 3émé ligne filtrée) l'information "VALIDER" est contenu
si oui => msg box (devis non modifiable)
Si non => je continue l'exécution de la macro
Ci-dessous macro
monarticle = "07-01-003"
If Sheets("feuil1" ).FilterMode Then ActiveSheet.ShowAllData
Application.DisplayAlerts = False
ligneinser = Sheets("feuil2" ).Cells(65527, 1).End(xlUp).Row + 1
Range("a1" ).AutoFilter Field:=1, Criteria1:=monarticle
nombsel = Application.WorksheetFunction.Subtotal(3, Range("a:a" )) - 1
If nombsel <> 14 Then
Call MsgBox("Le devis est inconnu ou erreur dans la base", , "Merci de vérifier votre N° de devis" )
Else
if .............?
Call MsgBox("attention", , " devis non modifiable" )
Else
Range(Cells(2, 1), Cells(65527, 1).End(xlUp).Offset(-7, 0)).Select
Selection.EntireRow.Copy
ActiveSheet.Paste Destination:=Sheets("feuil2" ).Cells(ligneinser, 1)
Selection.Delete
End If
End If
ActiveSheet.ShowAllData
Application.DisplayAlerts = True
Range("a1" ).Select
End Sub
Ci-joint fichier
http://cjoint.com/?dmrf2inJle
le devis 07-01-003 devrait renvoyer avec la macro que je cherche =>msg box (devis non modifiable) car quand j'applique le filtre à l'intersection de la 2éme colonne et de la 3ème ligne filtrée j'ai dans la cellule = VALIDER
a ta disposition,
Marsh Posté le 08-03-2007 à 13:55:20
Bonjour,
Je recherche une macro qui permette de sélectionner une cellule précise dans les lignes filtrées (visible) uniquement.
J'ai réalisé la macro suivante, qui ne fonctionne pas :-(( :
Cells(3, 2).SpecialCells(xlCellTypeVisible).Item(1).Select
elle sélectionne la cellule en ligne 3 et colonne 2 de l'ensemble des lignes excel, alors que je souhaite sélectionner la cellule enligne 3 et colonne des lignes visible.
exemple :
ligne 1 toto (filtre = 1) tata
ligne 5 1 5
ligne 7 1 8
ligne 10 1 9
ligne 14 1 5
la macro devrit sélectionner la cellule en ligne 10 colonne 2
d'avance merci d evotre aide,
lasapinière,