Comment récuper une valeur après un filtre

Steinner -  
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

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.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. fabien25000 Messages postés 697 Statut Membre 59
     
    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 

    1
    1. Steinned Messages postés 28 Statut Membre
       
      Bonjour,
      hormis la ligne Private sub CommandButton2_Click() qui fait doublon à celle que j'utilise ça marche super bien. je te remercie ça va bien m'aider
      0
      1. fabien25000 Messages postés 697 Statut Membre 59 > Steinned Messages postés 28 Statut Membre
         
        super, n'oublie pas de passer ton poste en résolu si ton problème est réglé, bonne route
        0
  2. fabien25000 Messages postés 697 Statut Membre 59
     
    bonjour,
    je commencerai par essayer avec
    For Each Cell In Range("G2:G16641")
    à mon humble avis..
    0
  3. Steinner
     
    Bonjour,

    Merci de votre réponse mais ça ne marche pas si vous avez d'autres propositions je suis preneur.
    0
  4. fabien25000 Messages postés 697 Statut Membre 59
     
    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


    0
    1. Steinner
       
      je viens de l'essaye ça résiste toujours.

      Après peut-être que ma formule de base est erronée.
      0
    2. fabien25000 Messages postés 697 Statut Membre 59
       
      chez moi ça fonctionne..
      essaye en nommant la feuille ou se situe le range("G2:G16641") en écrivant plutot
      worksheets("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..
      0
    3. Steinner
       
      Pas plus concluant malheureusement.
      0
    4. fabien25000 Messages postés 697 Statut Membre 59
       
      envoie un fichier exemple via mon partage en veillant bien à ce qu'il ne comporte pas de données confidentielles dans cas parce que "ça ne fonctionne pas" ne donne aucunes indications sur ce qui bloque
      0
    5. Steinner
       
      je viens de tester cette ligne de code dans un autre excel en adaptant et ça ne fonctionne pas non plus
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. fabien25000 Messages postés 697 Statut Membre 59
     
    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?

    0
    1. Steinned Messages postés 28 Statut Membre
       
      En effet l'idée de la macro est ailleurs.

      Dans l'idéal je cherche à faire que ma macro prenne la valeur en colonne G après filtrage et me l'écrive en H1
      0
    2. fabien25000 Messages postés 697 Statut Membre 59
       
      et quel filtre est ce que tu attends exactement?
      0
    3. Steinned Messages postés 28 Statut Membre
       
      Les colonnes B à F reprennent l'ensemble de les filtres que j'ai.
      je me sers de ces 5 paramètres pour définir la valeur en G.
      0
    4. fabien25000 Messages postés 697 Statut Membre 59
       
      donc tu veux appliquer un filtre selon 5 critères pour qu'il ne reste qu'un article et que la valeur de la colonne G s'inscrive en H1?
      0
    5. Steinned Messages postés 28 Statut Membre
       
      Oui
      0