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 :

Boucle pour afficher données [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Inscrit en
    Décembre 2009
    Messages
    273
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 273
    Points : 126
    Points
    126
    Par défaut Boucle pour afficher données
    Bonjour,

    Je cherche, par VBA, à inscrire dans une colonne les données résultant d'une formule qui se trouve dans une autre colonne.
    Je sais qu'il faut utiliser une boucle mais je ne domine pas ce sujet.
    Je joins un fichier test qui sera plus explicite.
    je vous remercie de votre aide.

    Cordialement
    Fichiers attachés Fichiers attachés

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut heu
    bonsoir
    j'ai regarder ton fichier ca m'a l'air trop simple
    peut tu preciser le contexte

    car si il n'y a pas de contrainte ou de cohérence requises avec les autre cellule
    une simple variable tableau ou dictionaire fera l'affaire
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Membre habitué
    Inscrit en
    Décembre 2009
    Messages
    273
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 273
    Points : 126
    Points
    126
    Par défaut
    Bonsoir,

    J'ai dans un onglet, des données quelconques..., et dans la dernière colonne une formule qui m'affiche l'ID de l'enregistrement si une condition est remplie.
    Dans cette colonne, il y a donc des champs vides et des ID.

    Je souhaite récupérer uniquement les ID en partant du haut de cette colonne et les inscrire dans un nouvel onglet en colonne A les uns en dessous des autres

    Est-ce olus explicite ? et le contexte est-il compréhensible ?

    Merci pour ton aide
    Cdt

  4. #4
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut
    Bonjour, bonjour !

    Pourquoi une boucle ?! Une formule de calculs est tellement plus efficace !

    Comme demandé dans la pièce jointe, résultat en colonne F (la vider auparavant) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Demo()
        With Feuil1.Cells(1).CurrentRegion.Rows
            VA = .Item("2:" & .Count).Columns(3).Address
        End With
        With Application
            VA = .Transpose(Filter(.Transpose(Evaluate("IF(" & VA & ">""""," & VA & ")")), False, False))
        End With
        Feuil1.[F2].Resize(UBound(VA)).Value = VA
    End Sub
    _____________________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

    _____________________________________________________________________________________________________
    Je suis Charlie, Bardo, Sousse
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  5. #5
    Membre habitué
    Inscrit en
    Décembre 2009
    Messages
    273
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 273
    Points : 126
    Points
    126
    Par défaut
    Bonjour Marc,

    Merci pour ce code, mais cela ne marche uniquement si dans la colonne "C" ce sont les lettres,or il y a aussi des chiffres.
    merci pour la suite.

    En revanche, pourquoi une boucle ?
    Tout simplement parce que je voudrais comprendre le fonctionnement d'une boucle qui extrait uniquement les données des champs de la colonne "C" si celui-ci n'est pas vide et les copier dans une autre colonne les uns en dessous des autres.

    Merci pour l'aide
    cordialement

  6. #6
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Comme quoi ne pas effectuer une présentation initiale claire & exhaustive
    accompagnée d'une pièce jointe reflétant la réalité est une perte de temps !

    Maintenant, entraînes-toi à trouver une formule fonctionnant dans tous les cas (du niveau débutant)
    puis la poster ici afin de te guider pour modifier ma procédure …
    Sinon conformément aux règles du forum, commence à écrire ton propre code
    à l'aide du tutoriel La gestion des boucles dans Excel.
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  7. #7
    Membre habitué
    Inscrit en
    Décembre 2009
    Messages
    273
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 273
    Points : 126
    Points
    126
    Par défaut
    Marc,

    Désolé, je pensais avoir été clair et j'avais même déposé un fichier test, même si effectivement je n'avais pas précisé que dans la colonne C il y aurait des lettres et des chiffres.
    Bref, on s'améliore avec le temps....

    Sinon, concernant ton code fourni (et je débute en VBA), j'ai bien compris ce à quoi correspondait la valeur retournée de VA, mais je ne comprend pas cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        VA = .Transpose(Filter(.Transpose(Evaluate("IF(" & VA & ">""""," & VA & ")")), False, False))
    Pourrais-tu me l'expliquer action par action ?
    J'ai fait un test et si dans ma colonne C il y des lettres et des chiffres, il n'inscrit que les lettre et s'il n'y a que des chiffres, j'ai un message d'erreur "Incompatibilité de type".
    J'ai cherché mais je ne trouve pas.
    Merci
    @+
    _

  8. #8
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut


    Formule dans la cellule D2 =SI(C2>"";C2) à recopier jusqu'en D11.

    La ligne de code utilise cette formule (en matricielle sur la plage des cellules) et ne retient pas celles fausses.
    Et sans message d'erreur de mon côté avec un nombre : entreprendre alors un code avec une boucle …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

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

Discussions similaires

  1. [Smarty] boucle pour afficher le resultat d'une requête SQL
    Par emi226 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 15/08/2010, 21h58
  2. Probleme formulaire pour afficher donnée
    Par nuFox dans le forum IHM
    Réponses: 1
    Dernier message: 04/12/2008, 16h02
  3. boucle pour afficher du xml
    Par phenix71 dans le forum VBA Word
    Réponses: 2
    Dernier message: 20/03/2008, 14h25
  4. réaliser une boucle pour afficher des sources
    Par cloridriks dans le forum Langage
    Réponses: 9
    Dernier message: 17/03/2008, 15h21
  5. boucle pour afficher form
    Par CaptJack dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 17/04/2007, 14h13

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