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 :

Etirer une formule dans un filtre = vide - vba [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    data manager
    Inscrit en
    Février 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : data manager

    Informations forums :
    Inscription : Février 2015
    Messages : 3
    Par défaut Etirer une formule dans un filtre = vide - vba
    Bonjour à tous,

    Je suis en train de travailler sur une macro et je bloque complètement sur cette partie, qui pourtant semble toute bête...
    J'ai dans un onglet de mon fichier une colonne dans laquelle j'ai certaines cellules vide et j'aimerais pouvoir remplacer ces cellules par un texte.
    Pour cela, j'ai effectué un filtre sur les cellules vides de cette colonne, j'arrive à entrer mon texte dans la première cellule de mon filtre mais impossible de trouver un moyen de l'étirer sur le reste des cellules de mon filtre...
    Voici le début de code que j'ai écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ActiveSheet.Range("$A$1:$BC$1000000").AutoFilter Field:=2, Criteria1:="="
                                                If Range("A2:A" & Range("A1000000").End(xlUp).Row).SpecialCells(xlVisible).Cells(1, 1) <> "" Then
                                                        Range("A2:A" & Range("A1000000").End(xlUp).Row).SpecialCells(xlVisible).Cells(1, 2).Select
                                                        ActiveCell.FormulaR1C1 = "TRAPPES"
    Je ne m'y prends certainement pas de la bonne manière, auriez-vous une idée plus judicieuse ?

    Merci d'avance pour votre aide

  2. #2
    Membre éprouvé
    Homme Profil pro
    Programmeur en temps libre
    Inscrit en
    Février 2015
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Programmeur en temps libre
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 68
    Par défaut
    Bonjour,

    avant de te proposer une solution j'aurais besoin de précisions:

    -Est-ce normal que tu filtres la colonne 2 avec les valeurs vides et que remplisses la colonne A ?

    -si c'est normal alors il faudrait mieux ajouter un deuxième critère de filtre sur la colonne A, plutôt que d'utiliser un if, sinon:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ActiveSheet.UsedRange.AutoFilter Field:=1, Criteria1:="="
     
    Range("A2:A" & ActiveSheet.UsedRange.Rows.Count).SpecialCells(xlCellTypeVisible).Value = "TRAPPES"
    en supposant que c'est dans la colonne A que se trouvent les cellules vides.

    Aposto

  3. #3
    Candidat au Club
    Femme Profil pro
    data manager
    Inscrit en
    Février 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : data manager

    Informations forums :
    Inscription : Février 2015
    Messages : 3
    Par défaut
    Bonjour Aposto,

    D'abord merci pour ta réponse! Ensuite, non je te confirme que c'est bien la colonne B que je veux remplir.

    Pour être plus précise, la colonne A est ma colonne de référence, elle ne contient pas de cellules vides, donc j'ai utilisé le if pour vérifier que j'ai bien une valeur dans la première cellule visible de la colonne A et donc que j'ai bien des éléments dans mon filtre (d'ailleurs je me rend compte que j'aurais du mettre <> de la valeur du titre de ma colonne et non pas <>"")

    Ensuite impossible de sélectionner ma première cellule de B en direct sur cette colonne avec SpecialCells(xlCellTypeVisible) donc j'ai contourné en sélectionnant celle de la colonne A et en décalant d'une cellule sur la droite :
    Range("A2:A" & Range("A1000000").End(xlUp).Row).SpecialCells(xlVisible).Cells(1, 2)
    Le résultat est correct j'ai bien la valeur TRAPPES dans ma première cellule visible dans la colonne B, mais maintenant je n'arrive pas à donner cette valeur à toutes les autres cellules vides de mon filtre...

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Février 2015
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur commercial

    Informations forums :
    Inscription : Février 2015
    Messages : 118
    Par défaut
    Bonjour,

    L'utilisation d'un filtre n'est pas forcément la façon la plus facile de procéder.
    Voici un exemple de code pouvant fonctionner ?
    Je pense que l'affectation de la "Plage" sera à optimiser; je te laisse chercher.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim Plage As Range
     
    Set Plage = Range("B1:B1000000")
     
    For Each Cellule In Plage
        If Cellule.Value = "" Then Cellule.Value = "TRAPPES"
    Next
    Bonne continuation.

  5. #5
    Candidat au Club
    Femme Profil pro
    data manager
    Inscrit en
    Février 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : data manager

    Informations forums :
    Inscription : Février 2015
    Messages : 3
    Par défaut
    Bonjour OBO29,

    Super!! Je n'ai pas réussi à utiliser for each mais du coup je me suis rabattue sur For next
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DerniereLigne = Range("A1").End(xlDown).Row
                                                For j = 1 To DerniereLigne
                                                        If Cells(j, 2).Value = "" Then Cells(j, 2).Value = "TRAPPES"
                                                Next j
    Ca marche nickel!! Merci beaucoup pour votre aide!!

  6. #6
    Membre expérimenté
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Février 2015
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur commercial

    Informations forums :
    Inscription : Février 2015
    Messages : 118
    Par défaut
    N'oublie pas de marquer ton sujet comme et bonne continuation

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Insérer une formule dans une cellule Excel via VBA
    Par *.Har(d)t dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/02/2020, 13h02
  2. Réponses: 12
    Dernier message: 30/04/2018, 09h57
  3. Inscrire une formule dans une cellule par VBA
    Par marc56 dans le forum Excel
    Réponses: 6
    Dernier message: 23/11/2008, 23h57
  4. [VBA] Macro qui envoie une formule dans une cellule
    Par Okoss dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/04/2007, 22h32
  5. [VBA-E] Appliquer une formule si cellule non vide.
    Par zeralium dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/03/2007, 19h58

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