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

Excel Discussion :

Macro copier coller dans une autre feuille


Sujet :

Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    COMPTABLE
    Inscrit en
    Novembre 2013
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : COMPTABLE
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2013
    Messages : 76
    Points : 36
    Points
    36
    Par défaut Macro copier coller dans une autre feuille
    Bonjour,

    Je vous joins un fichier excel nommé "maladie".

    J'ai essayé de créer une macro qui me permette de copier le matricule, et la date de début et de fin d'arrêt maladie (colonne AB à AS) sur une feuille nommé "01" (pour janvier), mais en vain... je suis débutant en vba, j'apprends sur le tas, et je manque de temps pour me pencher sur le problème parce qu'en tant que responsable financier, je ne peux passer trop de temps dans le développement des fichiers excel.

    Je souhaite copier ces données sur la feuille 01 pour janvier, parce que c'est cette feuille qui est importée dans le programme de paie en fin de mois (cela évite d'imprimer cette feuille et de saisir chaque arrêt dans le programme de paie).
    Mon principale problème réside donc dans le copiage de la colonne où il y a le matricule ainsi le copiage des colonnes où il y a des dates de début et de fin d'arrêt maladie pour les coller sur la feuille du mois de paie concerné qui sera importé dans le programme de paie.

    Est-ce qu'une bonne âme pourrait me trouver le code VBA et me faciliter la vie ?
    D'avance merci.
    Fichiers attachés Fichiers attachés

  2. #2
    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 : 69
    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
    Bonjour,
    J'ai essayé de créer une macro qui me permette de copier le matricule, et la date de début et de fin d'arrêt maladie (colonne AB à AS) sur une feuille nommé "01" (pour janvier), mais en vain.
    , il faut au moins publier ce que tu as fait pour montrer que tu as travaillé dessus car ton fichier en "xlsx" ne renvoies pas les macros, et même si tu n'as pas le temps, il faut un minimum d'investissement.

    Bon courage
    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...)

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    COMPTABLE
    Inscrit en
    Novembre 2013
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : COMPTABLE
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2013
    Messages : 76
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par casefayere Voir le message
    Bonjour,
    , il faut au moins publier ce que tu as fait pour montrer que tu as travaillé dessus car ton fichier en "xlsx" ne renvoies pas les macros, et même si tu n'as pas le temps, il faut un minimum d'investissement.

    Bon courage
    J'ai essayé de mettre le fichier xlsm en pièce jointe, mais ça a été rejeté... c'est pourquoi je l'ai converti en xlsx...
    Tant pis, sinon je me débrouillerait autrement.

    Cordialement,

  4. #4
    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 : 69
    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
    Ne te décourages pas et envoies le en Zip (compressé)
    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...)

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    COMPTABLE
    Inscrit en
    Novembre 2013
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : COMPTABLE
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2013
    Messages : 76
    Points : 36
    Points
    36
    Par défaut
    Voilà le fichier zippé... vous constaterez que mes connaissance VBA sont bien moindres...

    Cordialement,
    Fichiers attachés Fichiers attachés

  6. #6
    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 : 69
    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
    Je commençais malgré tout, avant d'avoir vu ton code, à esquisser un code, mais je vais regarder ton fichier et sa macro
    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...)

  7. #7
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Points : 2 553
    Points
    2 553
    Par défaut
    Donc si je comprends bien tu voudrais

    -boucler sur la colonne B de maladie
    -S'il y a un 1 alors copier : le matricule (colonne G), le début (colonne M) et la fin (colonne N) dans la feuille 0, dans les colonnes A B et C respectivement.

    Et ce pour tes 7 arrêts maladie ?

    En quoi les colonnes AB a AS t'importent ?

  8. #8
    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 : 69
    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
    En l'état, j'en suis là, a tester
    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
    25
    26
    27
    28
    29
    Sub Copier_Valeurs()
    Dim Nb As Long
    Dim x As Long
    Dim Plg As Range, TbGeneral, TbCopié(), Dl As Long
    With Sheets("maladie")
      Dl = .Range("G" & .Rows.Count).End(xlUp).Row
      Set Plg = .Range("G4:N" & Dl)
      TbGeneral = Plg
      Nb = 0
      For x = 1 To UBound(TbGeneral, 1)
        If IsDate(TbGeneral(x, 7)) Then
          If Month(CDate(TbGeneral(x, 7))) = 1 Then
            Nb = Nb + 1
            ReDim Preserve TbCopié(1 To 3, 1 To Nb)
            TbCopié(1, Nb) = TbGeneral(x, 7)
            TbCopié(2, Nb) = TbGeneral(x, 8)
            TbCopié(3, Nb) = TbGeneral(x, 1)
          End If
        End If
      Next x
    End With
    For x = 1 To UBound(TbCopié, 1)
      With Sheets("01")
        .Range("A" & x + 1) = TbCopié(3, x)
        .Range("B" & x + 1) = TbCopié(1, x)
        .Range("C" & x + 1) = TbCopié(2, x)
      End With
    Next x
    End Sub
    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...)

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    COMPTABLE
    Inscrit en
    Novembre 2013
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : COMPTABLE
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2013
    Messages : 76
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par EngueEngue Voir le message
    Donc si je comprends bien tu voudrais

    -boucler sur la colonne B de maladie
    -S'il y a un 1 alors copier : le matricule (colonne G), le début (colonne M) et la fin (colonne N) dans la feuille 0, dans les colonnes A B et C respectivement.

    Et ce pour tes 7 arrêts maladie ?

    En quoi les colonnes AB a AS t'importent ?
    Bonjour engueEngue,

    En fait il faudrait regarder partout où il y a des dates de début et des dates de fin dans les colonnes AB à AS, pour ensuite récupérer ces dates avec le matricule qui concerne ces arrêts et peut-être via une inputbox, demander dans quelle feuille on souhaite coller ces données les unes en dessous des autres. Par exemple :

    Matricule date deb. date fin
    46 (Toto Françoise) 05/01/2013 07/01/2013 (trouver dans la colonne AF à AG)

    62 (Titi Stessie) 06/01/2013 07/01/2013 (trouver dans la colonne AD à AE)
    Etc...

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    COMPTABLE
    Inscrit en
    Novembre 2013
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : COMPTABLE
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2013
    Messages : 76
    Points : 36
    Points
    36
    Par défaut
    Je test ta macro casefeyere et te tient au courant

    Cordialement,

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    COMPTABLE
    Inscrit en
    Novembre 2013
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : COMPTABLE
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2013
    Messages : 76
    Points : 36
    Points
    36
    Par défaut
    Je viens de tester votre macro casefeyere, et le matricule et les dates de début et de fin sont bien collés dans la feuille 01.
    Le problème c'est qu'il ne trouve que 3 personnes. Il ne trouve ni tontont ni martin par exemple, et il prend les dates d'arrêts dans les colonnes M et N et non dans les colonnes AB à AS.
    Ces colonnes bornent les dates d'arrêt.
    Si on est en janvier, et qu'on a un arrêt de travail allant du 05/01/2013 au 15/02/2013, ces colonnes sont là pour définir que pour le mois de janvier, il faudrait copier dans la feuille 01 (janvier), les dates du 05/01/2013 au 31/01/2013 (et non jusqu'au 15/02/2013, car le mois de paie est janvier).
    Il faut donc qu'il regarde dans les colonnes AB à AS, quel matricule à des dates d'arrêt de travail à importer en paie au mois de janvier, et qu'il les copie et les colle l'un en dessous de l'autre... je ne sais pas si je suis clair, mais je suis disposé à ré-expliquer s'il le faut...

    En tout cas, merci pour le temps passé bénévolement, ça me rend vraiment service.

  12. #12
    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 : 69
    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
    46 (Toto Françoise) 05/01/2013 07/01/2013 (trouver dans la colonne AF à AG)

    62 (Titi Stessie) 06/01/2013 07/01/2013 (trouver dans la colonne AD à AE)
    Je n'avais pas vu ça, donc ma macro sera à adapter
    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...)

  13. #13
    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 : 69
    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
    Maintenant, essayes ce code modifié
    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
    25
    26
    27
    28
    29
    30
    31
    Sub Copier_Valeurs()
    Dim Nb As Long
    Dim x As Long, y As Long
    Dim Plg As Range, TbGeneral, TbCopié(), Dl As Long
    With Sheets("maladie")
      Dl = .Range("G" & .Rows.Count).End(xlUp).Row
      Set Plg = .Range("G4:AS" & Dl)
      TbGeneral = Plg
      Nb = 0
      For x = 1 To UBound(TbGeneral, 1)
        For y = 22 To 38 Step 2
          If IsDate(TbGeneral(x, y)) Then
            If Month(CDate(TbGeneral(x, y))) = 1 Then
              Nb = Nb + 1
              ReDim Preserve TbCopié(1 To 3, 1 To Nb)
              TbCopié(1, Nb) = TbGeneral(x, y)
              TbCopié(2, Nb) = TbGeneral(x, y + 1)
              TbCopié(3, Nb) = TbGeneral(x, 1)
            End If
          End If
        Next y
      Next x
    End With
    For x = 1 To UBound(TbCopié, 2)
      With Sheets("01")
        .Range("A" & x + 1) = TbCopié(3, x)
        .Range("B" & x + 1) = TbCopié(1, x)
        .Range("C" & x + 1) = TbCopié(2, x)
      End With
    Next x
    End Sub
    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...)

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    COMPTABLE
    Inscrit en
    Novembre 2013
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : COMPTABLE
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2013
    Messages : 76
    Points : 36
    Points
    36
    Par défaut
    Merci Beaucoup "Casefeyere" ça marche impeccablement !

    Je suis vraiment épaté par ce que vous pouvez faire en si peu de temps !

    J'ai une dernière question : si je veux aussi copier des données de la colonne "AT" contenu dans la feuille "maladie", pour les coller dans la feuille "01" en colonne D (intitulé = Code évènement), qu'est-ce que je dois modifier dans la procédure, car j'avoue ne pas comprendre les "REdim preserve" et "ubound"...

    Cordialement,

  15. #15
    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 : 69
    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
    Si tu es patient, je réédite mon code avec explications et amélioré car j'ai ajouté un tableau au cas où tu ais beaucoup de données à traiter, les variables tableau sont plus rapides à l'exécution, mais je le réédite sans ta dernière demande afin que tu essayes de modifier toi-même, j'interviendrai, bien sur, si tu n'y arrives pas
    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...)

  16. #16
    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 : 69
    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
    voilà, les explications, et.....merci pour le guide (voir signature)
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    Sub Copier_Valeurs()
    'donc ci-dessous les variables dûment déclarées
    Dim Nb As Long
    Dim x As Long, y As Long
    'ci-dessous des tableaux, tbGeneral reprendra toutes les données dans les colonnes concernées
    'J'ai supprimé Plg qui ne sert pas à grand-chose
    Dim TbGeneral, TbCopié(), Dl As Long, TbFinal()
    With Sheets("maladie") 'donc données le la feuille maladie
      Dl = .Range("G" & .Rows.Count).End(xlUp).Row 'dernière cellule renseignée en col G
      TbGeneral = .Range("G4:AS" & Dl) 'plage à traiter, ça sera .Range("G4:AT" & Dl) après ta dernière demande
      Nb = 0 ' je mets ou remet, par surété cette variable à 0
      For x = 1 To UBound(TbGeneral, 1) 'une boucle qui parcoure tout TbGeneral, UBound(TbGeneral, 1) représente la dernière écriture de la première dimension _
      voir les tuto sur les manips des tableaux
        For y = 22 To 38 Step 2 'une boucle intégrée qui parcoure une ligne de date, en incrémentant de 2
          If IsDate(TbGeneral(x, y)) Then 'donc 1ere écriture vérifiée (est-ce une date) tbGeneral(1,22), deuxième tbGeneral(1,24)
            'ci-dessoous, si c'est une date
            If Month(CDate(TbGeneral(x, y))) = 1 Then 'si le mois de la date = 1
              Nb = Nb + 1 'on ajoute 1 à la variable Nb si la condition est remplie
              ReDim Preserve TbCopié(1 To 3, 1 To Nb) 'on redimensionne le tableau TbCopié dans sa deuxième dimension (impossible dans la 1ère quand 2 dimensions)
              TbCopié(1, Nb) = TbGeneral(x, y) 'au début, TbCopié(1,1) = TbGeneral(1,26) date début
              TbCopié(2, Nb) = TbGeneral(x, y + 1) 'au début, TbCopié(2,1) = TbGeneral(1,27) date fin
              'ici, il faudra adapter ta dernière demande (col AT)
              TbCopié(3, Nb) = TbGeneral(x, 1) 'au début, TbCopié(3,1) = TbGeneral(1,1)'matricule
     
            End If
          End If
        Next y
      Next x
    End With
    'une fois les données copiées dans TbCopié
    ReDim TbFinal(1 To UBound(TbCopié, 2), 1 To 3) 'on dimensionne TbFinal (on peut au départ sur la 1ere dimension)
    For x = 1 To UBound(TbFinal, 1) 'une boucle qui reprend les données de TbCopié
      TbFinal(x, 1) = TbCopié(3, x) 'au début TbFinal(1,1)matricule
      TbFinal(x, 2) = TbCopié(1, x) 'au début TbFinal(1,2)date début
      TbFinal(x, 3) = TbCopié(2, x) 'au début TbFinal(1,)date fin
      'ici aussi, il faudra adapter ta dernière demande (col AT)
    Next x
     
    Sheets("01").Range("A2:C2").Resize(UBound(TbFinal, 1)) = TbFinal 'je rends le résultat à la plage en feuil "01"
    'pour ta dernière demande Range("A2:C2") deviendra Range("A2:D2")
    'pour resize, voir l'aide
    End Sub
    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...)

  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 : 69
    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
    j'ai préparé un dernier code avec ta demande mais n'ai pas pu le vérifier car ta feuille est protégée avec mot de passe, donc, je ne communique pas, pour l'instant un code non controlé qui risque des erreurs, j'espère que tu comprendras mes explication dans l'avant-dernier post
    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
    Nouveau membre du Club
    Homme Profil pro
    COMPTABLE
    Inscrit en
    Novembre 2013
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : COMPTABLE
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2013
    Messages : 76
    Points : 36
    Points
    36
    Par défaut
    mot de passe = oles en minuscule

  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 : 69
    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
    Ok, allez ! je suis gentil, ce code avec ta dernière demande doit fonctionner, fais un essai en ajoutant des codes évènement, bien sur
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    Sub Copier_Valeurs()
    'donc ci-dessous les variables dûment déclarées
    Dim Nb As Long
    Dim x As Long, y As Long
    'ci-dessous des tableaux, tbGeneral reprendra toutes les données dans les colonnes concernées
    'J'ai supprimé Plg qui ne sert pas à grand-chose
    Dim TbGeneral, TbCopié(), Dl As Long, TbFinal()
    With Sheets("maladie") 'donc données le la feuille maladie
      Dl = .Range("G" & .Rows.Count).End(xlUp).Row 'dernière cellule renseignée en col G
      TbGeneral = .Range("G4:AT" & Dl) 'plage à traiter
      Nb = 0 ' je mets ou remet, par surété cette variable à 0
      For x = 1 To UBound(TbGeneral, 1) 'une boucle qui parcoure tout TbGeneral, UBound(TbGeneral, 1) représente la dernière écriture de la première dimension 
     ' voir les tuto sur les manips des tableaux
        For y = 22 To 38 Step 2 'une boucle intégrée qui parcoure une ligne de date, en incrémentant de 2
          If IsDate(TbGeneral(x, y)) Then 'donc 1ere écriture vérifiée (est-ce une date) tbGeneral(1,22), deuxième tbGeneral(1,24)
            'ci-dessoous, si c'est une date
            If Month(CDate(TbGeneral(x, y))) = 1 Then 'si le mois de la date = 1
              Nb = Nb + 1 'on ajoute 1 à la variable Nb si la condition est remplie
              ReDim Preserve TbCopié(1 To 4, 1 To Nb) 'on redimensionne le tableau TbCopié dans sa deuxième dimension (impossible dans la 1ère quand 2 dimensions)
              TbCopié(1, Nb) = TbGeneral(x, y) 'au début, TbCopié(1,1) = TbGeneral(1,26) date début
              TbCopié(2, Nb) = TbGeneral(x, y + 1) 'au début, TbCopié(2,1) = TbGeneral(1,27) date fin
              TbCopié(3, Nb) = TbGeneral(x, 40) 'col AT
              TbCopié(4, Nb) = TbGeneral(x, 1) 'au début, TbCopié(3,1) = TbGeneral(1,1)'matricule
            End If
          End If
        Next y
      Next x
    End With
    'une fois les données copiées dans TbCopié
    ReDim TbFinal(1 To UBound(TbCopié, 2), 1 To 4) 'on dimensionne TbFinal (on peut au départ sur la 1ere dimension)
    For x = 1 To UBound(TbFinal, 1) 'une boucle qui reprend les données de TbCopié
      TbFinal(x, 1) = TbCopié(4, x) 'au début TbFinal(1,1)matricule
      TbFinal(x, 2) = TbCopié(1, x) 'au début TbFinal(1,2)date début
      TbFinal(x, 3) = TbCopié(2, x) 'au début TbFinal(1,3)date fin
      TbFinal(x, 4) = TbCopié(3, x) 'au début TbFinal(1,4)code évènement
    Next x
     
    Sheets("01").Range("A2:D2").Resize(UBound(TbFinal, 1)) = TbFinal 'je rends le résultat à la plage en feuil "01"
    'pour resize, voir l'aide
    End Sub
    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
    Nouveau membre du Club
    Homme Profil pro
    COMPTABLE
    Inscrit en
    Novembre 2013
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : COMPTABLE
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2013
    Messages : 76
    Points : 36
    Points
    36
    Par défaut
    Vous êtes EXCELLENT !

    Merci beaucoup, je n'aurais jamais pu faire un tel code ! Je me réjouis de m'y pencher ce week-end !

    Bon Week-end à vous !

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 16/04/2015, 16h41
  2. [XL-2010] copier et coller dans une autre feuille du même classeur VBA
    Par awa123 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/08/2014, 19h35
  3. copier dans une feuille et coller dans une autre feuille
    Par papa64 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/07/2011, 23h06
  4. copier des cellules A1:AZ1 et coller dans une autre feuille en E1:E42
    Par zergo dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 06/02/2010, 07h40
  5. Réponses: 8
    Dernier message: 12/08/2009, 11h32

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