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

missdedicaces 3 Messages postés jeudi 27 janvier 2011Date d'inscription 17 février 2011 Dernière intervention - 27 janv. 2011 à 16:36 - Dernière réponse : missdedicaces 3 Messages postés jeudi 27 janvier 2011Date d'inscription 17 février 2011 Dernière intervention
- 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 

Votre réponse

2 réponses

Meilleure réponse
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 27 janv. 2011 à 17:19
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)

Merci cs_Jack 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.