IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[vba-excel]Comment modifier donnée sur partie filtrée d'un tableau


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 45
    Points : 36
    Points
    36
    Par défaut [vba-excel]Comment modifier donnée sur partie filtrée d'un tableau
    Bonjour,

    Voilà, je dois modifier le contenu d'une colonne B si les données de la colonne A correspondante se terminent par INC.
    Pour cela, j'ai commencé une macro VBA où je sélectionne les données qui m'intéressent gràce à un filtre puis je lui indique que la colonne B doit contenir que des +.

    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Sub MacroFiltre()
        Selection.AutoFilter Field:=1, Criteria1:="=*INC"
        For i = 2 To 3134
            Cells(i, 2).Select
            Application.CommandBars("Stop Recording").Visible = False
            ActiveCell.FormulaR1C1 = "+"
        Next i
    End Sub
    Le souci que j'ai c'est que ça ne tient pas compte de mon filtre, toutes les données de la colonne B contiennent +, qu'elles soient sélectionnées ou non.

    Merci bcp de me donner un petit coup de pouce,
    Virginie

  2. #2
    Membre régulier
    Avatar de mortalino
    Inscrit en
    Janvier 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2007
    Messages : 72
    Points : 116
    Points
    116
    Par défaut
    Salut,

    je ne te garanti rien mais peut-être que le fait de parcourir la selection sera plus adapté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub MacroFiltre()
            Dim MyCell As Range
        Selection.AutoFilter Field:=1, Criteria1:="=*INC"
        For Each MyCell In Application.Selection
            Application.CommandBars("Stop Recording").Visible = False
            MyCell.FormulaR1C1 = "+"
        Next MyCell
    End Sub
    @++
    ~Mortalino~ "Le mystérieux Chevalier : Provençal, le Gaulois"

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 45
    Points : 36
    Points
    36
    Par défaut
    Et non,
    ça me donne toujours le même résultat à savoir que tte la colonne est remplie par des + que les données soient filtrées ou pas....

  4. #4
    Membre régulier
    Avatar de mortalino
    Inscrit en
    Janvier 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2007
    Messages : 72
    Points : 116
    Points
    116
    Par défaut
    Alors essaie en lisant les valeurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub MacroFiltre()  
            Dim MyCell As Range 
        Selection.AutoFilter Field:=1, Criteria1:="=*INC"  
        For Each MyCell In Application.Selection
            Application.CommandBars("Stop Recording").Visible = False  
            If InStr(1, MyCell.Value, "INC") > 0 Then MyCell.FormulaR1C1 = "+"  
        Next MyCell 
    End Sub
    @++
    ~Mortalino~ "Le mystérieux Chevalier : Provençal, le Gaulois"

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    salut, excel n'a pas besoin que tu lui mette un filtre, il est tout a fait capable de trouver les bonnes valeurs tout seul et bien plus rapidement qu'avec le filtre
    essaye ça en changeant le nom de la feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub cherche()
    With Worksheets("Boucle").Range("a:a")
        Set c = .Find("*INC.", LookIn:=xlValues)
     If Not c Is Nothing Then
        firstaddress = c.Address
           Do
                c.Offset(0, 1) = "+"
                Set c = .FindNext(c)
           Loop While Not c Is Nothing And Not firstaddress = c.Address
    End If
    End With
    End Sub
    ça devrais te plaire

Discussions similaires

  1. [XL-2010] VBA excel - envoyer des données d'un fichier excel sur plusieurs fichiers words
    Par Marc31 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/08/2011, 13h53
  2. [VBA Excel] Comment gerer les combobox sur un Userform
    Par Igloobel dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/02/2007, 21h30
  3. [VBA EXCEL]comment utiliser les boites a outils control sur une feuille excel
    Par EvaristeGaloisBis dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/02/2007, 19h04
  4. Réponses: 2
    Dernier message: 27/09/2006, 19h41
  5. [VBA Excel]Envoie de données sur port serie
    Par Farbin dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/08/2006, 08h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo