Filtrer et parcourir un tableau à l'aide d'une macro excel [Résolu]

Messages postés
3
Date d'inscription
jeudi 27 janvier 2011
Statut
Membre
Dernière intervention
17 février 2011
- - Dernière réponse : missdedicaces
Messages postés
3
Date d'inscription
jeudi 27 janvier 2011
Statut
Membre
Dernière intervention
17 février 2011
- 17 févr. 2011 à 17:50
Bonjour,

Suite à un projet, je souhaite obtenir une macro qui parcours un tableau et qui filtre suivant la valeur dans les colonnes. Ensuite les valeurs trouvées devront etre afficher dans une autre feuille.
Le tableau est constitué de la manière suivante :
colonne 1 : etat
colonne 2 : numero site A
colonne 3 : numero site B
colonne 4 : debit
On filtre suivant une valeur de A donné et on obtient le numero des sites B attaché eainsi que le debit entre chaque liaison. Ceci pour environ 1000 sites. Donc je cherchais une macro pour faire ça automatiquement :

j'ai commencé à élaborer un code :
Sub parcourir()
ActiveSheet.Range("$A$1:$G$34426").AutoFilter Field:=1, Criteria1:="Réel" 'filtre pour un reel

Dim A As Integer

For Each c In Range("B1:B34290") ' parcours le tableau

Merci d'avance pour vos réponses
If c.Value() = "10000" Then
' A Sheets("Nom de l'autre onglet").Range("B6") "Je suis dans un autre onglet" 'ecrire dans une autre cellule d'un autre onglet
End If
Next
End Sub

mais je ne sais pas comment recuperer la valeur des cellules de la colonne B et C et les renvoyer dans un fichier final ne contenant que le site A et tous ces liens.
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
60
3
Merci
Salut

Bien embrouillé, tout ça.
Et plein de questions différentes ou pas ...

Le filtre que tu as utilisé est une bonne solution (Filtre automatique).
En réalité, ce filtre rend invisible les lignes ne correspondant pas au critère.
invisible hauteur de ligne 0

Quand tu scannes les cellules, toutes les cellules sont toujours là, même celles qui sont masquées : il faut donc vérifier la hauteur de ligne pour savoir si c'est une donnée à prendre en compte :
For Each c In Range("B1:B34290")
    If c.Height <> 0 Then
        ' Ligne visible
        If c.Value = "10000" Then
            ' La cellule Bx vaut 10.000
            MsgBox "La valeur de la colonne ""D"" est " & c.Offset(0, 2).Value
        End If
    End If
Next

Pour écrire dans une autre feuille, il te suffit de la désigner par Sheets("le nom") puis de désigner la cellule où tu veux coller la donnée.
Si tu veux mettre les données les unes sous les autres, il te faudra créer un compteur et l'incrémenter à chaque insertion.
Voir Offset, encore une fois
Exemple
Sheets("ma feuille").Range("A1").Offset(maLigneIncrémentée, 0).Value
pour écrire X lignes en dessous de A1

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 122 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Jack
Messages postés
3
Date d'inscription
jeudi 27 janvier 2011
Statut
Membre
Dernière intervention
17 février 2011
0
Merci
Merci ça marche
Commenter la réponse de missdedicaces