Copier coller valeur textbox colonne filtrée

Résolu/Fermé
mickysor - 2 mars 2013 à 21:06
 mickysor - 2 mars 2013 à 22:47
Bonjour,

En VBA je souhaiterais coller la valeur d'une textbox (userform) dans une autre feuille à la dernière ligne.le problème est que cette feuille est filtrée et je ne peux pas enlever ce filtre car il fait beaucoup ralentir mon tableau. Comment faire?



A voir également:

1 réponse

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
2 mars 2013 à 21:27
Bonjour,

Même si ta feuille possède un filtre rien ne t'empêche de rajouter une dernière ligne ?

Pour trouver son numéro, n'utilises pas end qui tient compte du filtre mais tu as bien d'autres possibilités comme .UsedRange.Rows.Count par exemple.
0
j'ai uncode vba comme ceci:
Range("archivjour!A65536").End(xlUp).Offset(1, 0) = A.Offset(0, 0).Text
j'ai déjà éssayé avec UsedRange.Rows.Count mais pas réussi.
je suis débutant en vba désolé
0
voici le code complet.arriverais tu à l'adapter avec le problème de filtres?:

Dim A As Range
Set A = Range("listetag!B1:a" & Range("listetag!A65536").End(xlUp).Row).Find(TextBox1.Value)
If Not A Is Nothing Then
Range("archivjour!A65536").End(xlUp).Offset(1, 0) = A.Offset(0, 0).Text
Range("macros!y2") = A.Offset(0, 0).Text
End If
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
2 mars 2013 à 21:37
Ceci devrait fonctionner :

With Sheets("archivjour")
    .Cells(.UsedRange.Rows.Count + 1, 1).Value = Me.TextBox1.Value
End With
0
c'est super! sauf que malheureusement il me colle les données en décalé encore plus pas,comme s'il mémorisait les lignes que j'ai éfacées et qu'il n'a pas pris en compte!
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
2 mars 2013 à 22:06
C'est le problème bien connu de UsedRange qui n'est mis à jour pour les suppressions qu'à la réouverture du classeur. Comme ceci tu contourner le bug ;-)

Dim lig As Long
With Sheets("archivjour")
    lig = .UsedRange.Rows.Count + 1
    While .Cells(lig - 1, 1).Value = ""
        lig = lig - 1
    Wend
    .Cells(lig, 1).Value = Me.TextBox1.Value
End With
0