Bonjour, bon le titre encore une fois n'est pas clair !
Voilà mon soucis:
comment faire après avoir fait un filtre automatique(par vba et avec un userform), pour accéder à une cellule précise de ce filtre.
Par exemple, après avoir filtré, c'est la ligne 4 qui apparait en premier dans mon onglet "archives". Comment faire en vba pour mettre une valeur précise dans la cellule C4 (par exemple).
bonjour Spitnolan08
euh non ! car avec le filtre automatique la cellule change constamment cela peut être c4 mais aussi c250 ou c500 (la colonne C elle ne bouge pas) et ma valeur vient d'un textbox
Je ne sais pas si j'ai bien compris un probleme de clarete
si j'ai compris, tu utilises les filtres automatiques, qui finalement te permettent d'avoir une selection
Pour cette selection, tu desirerais affecter une valeur precise dans une colonne, si tu as plusieurs lignes selectionnées : exemple le 4, la 6, la 47
ces trois lignes doivent faire l'objet d'une modification
Voici une petite macro qui triche un peu. apres tes filtres
Code:
dim ligne as long, numlig as long
ligne = range("C65535").end(xlup).row
range("C1").select
numlig=0
while numlig<=ligne
sendkeys "{DOWN}"
if activecell.row<=ligne then activecell = textbox1
numlig = activecell.row
wend
un petit fichier exemple (sans données confidentielles) serait plus parlant
est-ce-que
la premiere cellule de la colonne C apparente apres filtrage
serait une definition de l'endroit ou tu veux mettre une 'valeur precise ' issue d'une textbox ??
ps: le fichier exemple eviterait egalement aux bonnes volontés d'avoir a en creer un pour tester (nous avons coutume de donner aussi souvent que possible des codes testés)
Bon je vois que franchement ce n'était pas clair du tout
Je vais tenter une autre approche :
je crée un bon n° 1 qui me dit que le client A a pris 5 palettes - (tout cela c'est fait avec un userform). Ces données sont donc copiés dans une feuille "archive".
Lorsque le gentil client revient, il me dit : tiens je vous ramène 2 palettes.
Ce que je voudrais, c'est renseigner dans la ligne qui correspond au bon N° 1 la cellule ou je dois rentrer le nombre de palette réstituée. (et tout ça sous forme d'userform).
donc rechercher la ligne (ça je sais faire avec l'userform et le filtre automatique) et entrer dans la colonne C quelquechose les palettes rendus.
pas l'impression d'être plus clair !
OUPS que de réponses entre temps, je vais voir cela et tenter également de donner unfichier exemple.merci de vos aides
Tout à fait d'accord avec Pierrejean : tu continues à faire de la prose pas claire en nous donnant un exemple qu'il nous faut reconstituer : Pas glop et pas vraiment cool...
Ceci étant je pense que ma dernière proposition convient parfaitement à ce que tu veux faire...
Cordialement
Edit : visiblement tu n'avais pas vu les messages précédents... vu ton edit...
Positionne sur la colonne C ligne 1
Compte le nombre de lignes à traiter (On sait d'avance qu'il est faux à cause des lignes masquées)
effectue une boucle en fonction de la ligne active qui pour sortir de la boucle doit etre superieur au total des lignes
Mais voici l'astuce, au lieu de passer les lignes une à une, j'envoie une touche fleche en bas : SendKeys "{DOWN}", qui me positionne sur la premiere ligne selectionnée et passe automatiquement le lignes masquées
et la je travail avec ActiveCell.row qui ne me donne pas la ligne 2 mais la ligne reelle selectionnée
Et quand je n'ai plus de ligne OK donc forcement ActiveCell.row est superieure aux total des lignes
La macro fournie doit etre adaptée en foction de tes besoins, mais dans l'analyse elle fonctionne, je l'utilise regulierement
Sauf erreur de ma part lorsque tu utilises un filtre automatique la cellule active est la 1ère en haut à gauche des lignes affichées. ERRATUM : C'est faux... or j'avais tout fondé la dessus
Cordialement
Oui mais celle qui m'interesse c'est dans cette fameuse ligne (donc la 1ere du filtre), la colonne C .bref avoir active la cellule de la 1ere ligne du filtre de la colonne C
Sub Test()
'***Pour une liste en A1:C16 et une recherche sur la colonne 1 de "bb"
Range("A1:C16").Select
Selection.AutoFilter Field:=1, Criteria1:="bb"
SendKeys "{DOWN}"
Cells(ActiveCell.Row, "C") = TaValeurPrécise
End Sub