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 - Copier vers autre feuille, sous conditions [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Juin 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2013
    Messages : 3
    Points : 3
    Points
    3
    Par défaut VBA - Copier vers autre feuille, sous conditions
    Bonjour,

    Qui pourrait m’aider et m’ôter une énorme épine du pied ?

    Je dois récupérer des informations de la feuil1 sous certaines conditions et les recopier vers la feuil2.

    Conditions pour recopier les données de la feuil1 :
    1) La valeur de la cellule de la colonne A doit être « ACTIF »
    2) La valeur de la cellule de la colonne B doit être « PAYE »
    3) la cellule de la colonne H doit être vide
    4) la date d’aujourd’hui doit être >= à la valeur de la cellule (date) de la "colonne G" moins 2 mois".

    Après cela, Les données (colonne A, B,C,D,E,F,G) restantes doivent être recopiées vers la feuil2 et
    La colonne I recoit le résultat de la "colonne G" moins 2 mois
    La colonne H de la feuil2 est remplie avec la date d’aujourd’hui pour les valeurs copiées
    La colonne H de la feuil1 est remplie avec la date d’aujourd’hui uniquement pour les données copiées vers la feuil2 (exclusion via la condition 3 si on relance le code)

    merci pour toute l'aide possible

  2. #2
    Futur Membre du Club
    Femme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 73
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Janvier 2016
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    pour les conditions, un if classique ! Essaie :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
     
    dim l_debut, l_fin as integer
     
    l_debut = 1 'à adapter
    l_fin = range("A1").end(xlDown).row
     
    for i = l_debut to l_fin
     
    if range("a" & l_debut).offset(i-l_debut,0) = "ACTIF" and range("b" & l_debut).offset(i-l_debut,0) = "payé" and range("h" & l_debut).offset(i-l_debut,0) = "" and now() > = range("g" & l_debut).offset(i-l_debut,0) - 60 then
              sheets("feuil2").range("A1:G1").offset(i-l_debut,0) = sheets("feuil1").range("A1:G1").offset(i-l_debut,0) 
              sheets("feuil2").range("h1").offset(i-l_debut,0) = 
              sheets("feuil1").range("h1").offset(i-l_debut,0) =
     
    end if
     
    next i

    J'ai tappé ça sans compiler, il y a certainement des fautes de frappes, potentiellement un .value à ajouter après les range et le format de la date à ajuster mais tu as l'esprit ici. De même, a voir si dans l'offset c'est un i-l_debut ou i-l_debut +/- 1.
    Enfin la condition sur la date est à la louche (2 mois = 60 jours) et j'ai un doute sur l'utilisation de today.

  3. #3
    Candidat au Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Juin 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2013
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Merci, je vais regarder cela :-)

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 761
    Points : 28 619
    Points
    28 619
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Si tu souhaites exporter les lignes d'une liste de données suivant critères, je te conseille l'utilisation de la méthode AdvancedFilter (Filtre avancé d'excel).
    Après avoir défini, la zone des données, la zone des critères et la zone d'exportation, le code VBA se résume à une seule ligne.

    A lire Les filtres avancés ou élaborés dans Excel
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Candidat au Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Juin 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2013
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Philippe, Lebarj,

    Merci pour vos conseils.
    Le code est en fait la base pour quelque chose de plus complexe que je vais commencer à attaquer ;-).
    J'avais pensé au filtre élaboré, mais ce dernier ne pourra pas répondre à toutes mes attentes

    J'ai adapté ceci pour que les enregistrements copiés se placent l'un en dessous de l'autre dans la nouvelle feuille.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Feuil1").Range("A2:G2").Offset(i - l_debut, 0).Copy Destination:=Sheets(aujour).Range("A" & Sheets(aujour).Range("A" & Rows.Count).End(xlUp).Row + 1)
    "aujour" est une variable...

    MERCI !!!!

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

Discussions similaires

  1. [XL-2010] Report de données sur une autre feuille, sous condition
    Par colinez dans le forum Excel
    Réponses: 3
    Dernier message: 15/06/2015, 16h26
  2. Copier des lignes dans une autre feuille sous condition
    Par Maya06 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/05/2014, 20h57
  3. Décaler une colonne sur une autre feuille sous condition
    Par rafspain77 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 14/11/2011, 17h15
  4. Envoi vers autre base sous conditions
    Par michaeledwards dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 15/12/2010, 09h27
  5. [XL-2003] affichage d'une cellule d'une autre feuille sous conditions
    Par DC_44 dans le forum Excel
    Réponses: 7
    Dernier message: 08/07/2010, 16h40

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