Comment récuper une valeur après un filtre
Steinner
-
fabien25000 Messages postés 697 Statut Membre -
fabien25000 Messages postés 697 Statut Membre -
Bonjour,
J'ai un problème, je n'arrive pas a récupérer les valeurs après avoir filtrer mon tableau.
J'ai essayé ce code mais sans succès et je ne vois pas où ce situe l'erreur. Si quelqu'un peut m'aider ça m'arrangerai bien.
Sub test()
Dim Analyse As String
For Each Cellule In Range("G2:G16641").SpecialCells(xlCellTypeVisible)
If Cellule.Value <> "" Then
Analyse = Cellule.Value
Worksheets(Analyse).Range("H1") = "yes"
End If
End Sub
J'ai un problème, je n'arrive pas a récupérer les valeurs après avoir filtrer mon tableau.
J'ai essayé ce code mais sans succès et je ne vois pas où ce situe l'erreur. Si quelqu'un peut m'aider ça m'arrangerai bien.
Sub test()
Dim Analyse As String
For Each Cellule In Range("G2:G16641").SpecialCells(xlCellTypeVisible)
If Cellule.Value <> "" Then
Analyse = Cellule.Value
Worksheets(Analyse).Range("H1") = "yes"
End If
End Sub
5 réponses
Résumé de la discussion
Une macro VBA vise à récupérer les valeurs visibles après filtrage dans la colonne G et à les écrire en H1, mais le code proposé ne fonctionne pas. Plusieurs répondants suggèrent d'indiquer explicitement la feuille dans le code et d'écrire la valeur dans H1 de la même feuille plutôt que sur la feuille active afin d'éviter des lectures erronées. Des propositions portent sur la robustesse du filtre et l'usage correct de la plage visible, notamment en nommant la feuille et en vérifiant l'existence de cellules visibles avant d'écrire.
-
Dis moi si ça te va
Private Sub CommandButton2_Click() Dim Acier As String, Diametre1 As String, Diametre2 As String, Diametre3 As String Dim Assemblage As String, Epaisseur As String, Position As String Dim derLig As Integer Dim i As Integer Dim tmpItem As String Acier = ComboBox1.Value Assemblage = ComboBox2.Value Epaisseur = ComboBox3.Value Position = ComboBox4.Value Diametre1 = ComboBox5.Value Diametre2 = ComboBox6.Value Diametre3 = ComboBox7.Value derLig = Worksheets("Analyse").Range("A" & Rows.Count).End(xlUp).Row Worksheets("Analyse").Activate For i = 2 To derLig tmpItem = Range("B" & i) & Range("C" & i) & Range("D" & i) & Range("E" & i) & Range("F" & i) If tmpItem = Acier & Diametre1 & Assemblage & Epaisseur & Position Then Range("H1").Value = Range("G" & i).Value If tmpItem = Acier & Diametre2 & Assemblage & Epaisseur & Position Then Range("I1").Value = Range("G" & i).Value If tmpItem = Acier & Diametre3 & Assemblage & Epaisseur & Position Then Range("J1").Value = Range("G" & i).Value Next i End Sub
-
bonjour,
je commencerai par essayer avecFor Each Cell In Range("G2:G16641")à mon humble avis..
-
Bonjour,
Merci de votre réponse mais ça ne marche pas si vous avez d'autres propositions je suis preneur. -
Voilà comment il faut l'écrire :
Sub test() Dim Analyse As String For Each Cell In Range("G2:G16641").SpecialCells(xlCellTypeVisible) If Cell.Value <> "" Then Analyse = Cell.Value Worksheets(Analyse).Range("H1") = "yes" End If Next End Sub
-
-
chez moi ça fonctionne..
essaye en nommant la feuille ou se situe le range("G2:G16641") en écrivant plutotworksheets("NOMDETAFEUILLE").range("G2:G16641")
parce que si tu ne nommes pas de feuille excel va aller chercher dans la feuille active et forcément ça ne fonctionnera pas si tu n'es pas de base sur la feuille voulue.. -
-
-
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Décryptons ta procédure pour bien comprendre :
Dim Analyse As String
'ici tu déclares une variable "Analyse" de type String : qui reçoit du texte
For Each Cell In Range("G2:G16641").SpecialCells(xlCellTypeVisible)ici on demande à excel de verifier chaque cellule de G2 à G16641 (de quelle feuille, ça c'est pas précisé)
If Cell.Value <> "" Then
Si La cellule en cours de vérification est différente de vide, fait ce qu'il suit
Analyse = Cell.Value
La variable Analyse reçoit la valeur de la cellule en cours (valeur qui n'est pas String du tout au passage)
Worksheets(Analyse).Range("H1") = "yes"ici tu demandes d'aller écrire "yes" dans la cellule H1 de la feuille qui porte le nom que l'on vient de récupérer dans la variable Analyse
End If
Fin du IF
Next
on passe à la cellule suivante
en voyant ton fichier je pense que ce n'est pas du tout ce que tu attends.. je me trompe?