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 :

Copier feuille sur autre autre feuille avec conditions


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 275
    Points : 152
    Points
    152
    Par défaut Copier feuille sur autre autre feuille avec conditions
    Bonjour,

    Je me permet de demander votre aide afin de mettre une feuille de mon classeur en relation sur une autre feuille du même classeur avec la condition que les date soit <31 jours de la date du jour.

    Merci de votre aide.

    Cordialement,

    vincent

    PS: Excusez moi, pour l'explication. j'ai été trop vite dans la rédaction.

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Allez y, personne ne vous empêche

    Sérieusement, relis ton post, penses-tu que quelqu'un peut comprendre ce que tu as écris ou deviner ce que tu veux faire. Même un effort de bien expliquer et expliciter la problématique est absent.
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  3. #3
    Membre expérimenté
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Points : 1 499
    Points
    1 499
    Par défaut copier feuille
    bonjour,

    c'est un peu court jeune homme !

    voici cependant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Sub copiefeuilleconditionnelle()
        With Sheets("Feuil1")
         If .Range("a1") > 31 Then
            .Cells.Copy Sheets("Feuil2").Range("a1")
         End If
        End With
    End Sub
    j'ai supposé que la valeur à comparer se trouvait sur la cellule A1 de la feuil1 à copier.

    Edit : bonjour Mercatog : nos messages se sont croisés
    cordialement,

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 275
    Points : 152
    Points
    152
    Par défaut
    Escusez moi pour l'explication je l'ais refait.

    Le code fonctionne sauf qu'il me met toute les données sauf que je souhaite les 31 jours d'avant aujourd'hui.

    J'espère être plus conpréhensible.

    Cordialement,

    vincent

    @ nibledispo

    ("a1") est en format 00/00/0000

  5. #5
    Membre expérimenté
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Points : 1 499
    Points
    1 499
    Par défaut copier feuille
    re...,

    et si tu joignais ta feuille excel exemple de données etpar rapport à cet exemple la copie que tu souhaistes obtenir ce serait clair pour tous.

    en attendant, il suffit de mettre :
    - sur mon code >30 par <31
    - sur la feuille à copier tes cellules au format que tu veux.

    cordialement,

  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 275
    Points : 152
    Points
    152
    Par défaut
    re,

    en attendant, il suffit de mettre :
    - sur mon code >30 par <31
    - sur la feuille à copier tes cellules au format que tu veux.
    J'ai essayer et cela ne change rien.
    Je vous joint un fichier expliquant mes besoins. sans macro de créer.

    Cordialement,

    vincent
    Fichiers attachés Fichiers attachés

  7. #7
    Membre expérimenté
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Points : 1 499
    Points
    1 499
    Par défaut copier feuille
    bonsoir,

    je ne comprends plus rien à ta demande et ton fichier n'ajoute rien à la compréhension.
    essaie d'exprimer clairement ton besoin même si cela n'est pas chose aisée pour toi.
    exemple
    - j'ai un fichier avec en colonne A des dates qui se suivent sans interruption.
    dire ce que représentent ces dates, .....
    - je veux voir en colonne I (je ne sais quoi ) si telles et telles conditions sont remplies.....
    - je veux ensuite copier la feuille sur une autre feulle si telle condition est remplie .....

    etc... etc...

    cordialement,

  8. #8
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 275
    Points : 152
    Points
    152
    Par défaut
    Bonjour,

    Je vous expliques

    j'ai dans le fichier dans la feuil2 avec plus date qu'y vient d'une base de données.

    Je souhaite sur la feuil1 tout les dates compris entre la date du jour et 1 mois précédent

    exemple:

    les dates compris entre la date du jour donc le 06/11/2013 et la date du mois précédent le 06/10/2013 et demain entre le 07/11/2013 et le 07/10/2013.

    J'espère avoir été plus claire.

    Cordialement,

    Vincent

  9. #9
    Membre expérimenté
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Points : 1 499
    Points
    1 499
    Par défaut copier feuille
    Bonjour,

    Je comprends :
    - que tu as une base de donnée feuille 2
    - que tu veux récupérer dans cette feuille 2 les dates courant de la date du jour (la dernière de la liste) au même jour du mois précédent.

    C'est d'ailleurs le résultat que l'on trouve en colonne A de ta dernière pièce jointe.

    mais dans cette pièce jointe quelle est alors l'utilité de la colonne I ?

    Par ailleurs:
    - la feuille 2 évolue-t-elle chaque jour (dernière date = date jour) ?
    - le traitement doit-il être automatique à l'ouverture du classeur ou demandé par l'opérateur ?

    Cordialement

  10. #10
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 275
    Points : 152
    Points
    152
    Par défaut
    Bonjour,

    la colonne I permet tout simplement d'expliquer si le jour se décaler comme dans l'exemple précédent.

    - la feuille 2 évolue-t-elle chaque jour (dernière date = date jour) ?
    Non la dernière date n'est pas toujours la date du jour. la dernière date est dans une cellule pour un filtrage

    -le traitement doit-il être automatique à l'ouverture du classeur ou demandé par l'opérateur ?
    Le traitement doit se faire à chaque modification sur la feuil2 met çà je connais.

    Cordialement,

    vincent

  11. #11
    Membre expérimenté
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Points : 1 499
    Points
    1 499
    Par défaut copier feuille
    re....,

    vois ci le code ci-dessous correspond à ta demande.

    tu peux le tester avec le fichier joint.

    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
     
    Sub copiefeuilleconditionnelle()
        Feuil1.Range("A2:A40").ClearContents
        With Sheets("Feuil2")
     
             derlig = .[A2].End(xlDown).Row
     
             If derlig > 32 Then
                .Range(Cells(derlig - 31, 1), Cells(derlig, 1)).Copy Sheets("Feuil1").Range("a2")
             End If
     
             For J = 1 To 31
               Feuil1.Range("I" & J + 1) = Now + J - 1
             Next J
     
        End With
    End Sub
    Fichiers attachés Fichiers attachés

  12. #12
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 275
    Points : 152
    Points
    152
    Par défaut
    re,

    Merci pour l'aide, mais il y a une erreur sur la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range(Cells(derlig - 31, 1), Cells(derlig, 1)).Copy Sheets("Feuil1").Range("a2")
    erreur d'éxécution 1004

    cordialement,

    vincent

  13. #13
    Membre expérimenté
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Points : 1 499
    Points
    1 499
    Par défaut copier feuille
    étonnant ce que tu me dis !

    je viens de refaire l'essai sur ma version Excel 2013 et le resultat est bien là sans message d'erreur.

    tu as fait l'essai avec le fichier que je t'ai joint ?

    A+

  14. #14
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    et si tu essayais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Feuil1").Range("a2:a34").Value = .Range(.Cells(derlig - 31, 1), .Cells(derlig, 1)).Value
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  15. #15
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 275
    Points : 152
    Points
    152
    Par défaut
    Merci nibledispo et casefayere,

    sa fonctionne par contre j'obtiens sur le fichier envoyer maintenant + 31 jours alors que je souhaiterais maintenant - 31 jours.

    Cordialement,

    vincent

  16. #16
    Membre expérimenté
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Points : 1 499
    Points
    1 499
    Par défaut copier feuille
    Bonjour VinS86 et Casefayere

    Vins86 :il faut t'efforcer d'être plus précis dans tes commentaires.

    Ça fonctionne après l'apport de Casefayere ou avant.

    De quel +31 parles tu : colonne I ou colonne A de la feuille 1.

    Remarque : le code pour la colonne I n'est pas assez étoffé. En effet, il traite même si la date ne se trouve pas colonne A.

    J'ai tenté de le modifié en conséquence mais il me renvoie une erreur 1004 à la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    plage = .Range(Cells(2, 1), Cells(derlig1, 1))
    du code ci-dessous:

    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
    18
    19
    20
    21
    22
    23
    24
     
    Sub copiefeuilleconditionnelle()
        Dim derlig1 As Integer
        Dim derlig2 As Integer
        Dim plage As Object
     
        Feuil1.Range("A2:A40").ClearContents
        With Sheets("Feuil2")
             derlig2 = .[A2].End(xlDown).Row
             If derlig2 > 32 Then
                .Range(Cells(derlig2 - 31, 1), Cells(derlig2, 1)).Copy Sheets("Feuil1").Range("a2")
             End If
        End With
     
        With Sheets("Feuil1")
             derlig1 = .[A2].End(xlDown).Row
             plage = .Range(Cells(2, 1), Cells(derlig1, 1))
             If Application.Match(Now, plage, 0) Then
                For J = 1 To 31
                    .Range("I" & J + 1) = Now + J - 1
                Next J
             End If
        End With
    End Sub
    Casefayere : vois-tu mon erreur ?
    il n'est pas exclu qu'il bloque ensuite à la ligne suivante

    Cordialement,

  17. #17
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Re à tous les deux,

    essayes en ajoutant les"." à cells
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    plage = .Range(.Cells(2, 1),.Cells(derlig1, 1))
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  18. #18
    Membre expérimenté
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Points : 1 499
    Points
    1 499
    Par défaut copier feuille
    J'ai déjà tenté l'ajout des points avant de poser question mais dans ce cas, il renvoie l'erreur 1004 (j'ai inversé les message d'erreur dans ma question initiale)

    alors que sans, il renvoie l'erreur 91 (variable objet ou variable de bloc with non définie)

  19. #19
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set plage = .Range(.Cells(2, 1),.Cells(derlig1, 1))
    J'ai oublié de dire plage à déclarer en "Range"
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  20. #20
    Membre expérimenté
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Points : 1 499
    Points
    1 499
    Par défaut copier feuille
    C'est bon, je mériterais une claque pour cette évidence.

    C'est à présent, comme je le craignais, sur la ligne suivante que cela coince.
    il me renvoie ERREUR 13 (incompatibilité de type) que je mette plage ou plage.value. Pourtant Now ne peut-être qu'une date et la colonne correspondant à plage est bien au format date
    .plage n'est pas valable non plus.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XL-2007] Copier les valeurs d'une feuille sur des autres automatiquement
    Par Wenth dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/06/2013, 01h36
  2. [XL-2003] Copier plusieurs tableau d'une feuille sur une auter feuille
    Par Alex5974 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 28/03/2012, 15h41
  3. Copier - Coller les résultats DES feuilles sur une seule feuille.
    Par arnold95 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/04/2009, 15h14
  4. Recherche et copier/coller sur une autre feuille
    Par AzelRoth dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/02/2009, 10h21
  5. copier des cellules d'une feuille dans une autres sous condition
    Par olivertwist dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 16/05/2007, 10h42

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