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 :

Mise en forme d'une page en VBA [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Octobre 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Octobre 2011
    Messages : 27
    Par défaut Mise en forme d'une page en VBA
    Bonjour,

    Je souhaite mettre en page une page Excel à l'aide d'une macro

    Je vous ai mis un fichier avec une feuille ou vous avez l'extract Brut et une seconde feuille avec la mise en forme que je souhaiterai.

    Mon soucis est que pour un agent il peut avoir plein de connexion et déconnexion il faut donc les supprimer si elle sont inférieur à 20 min.

    Cela me permettrai de pouvoir avoir une heure d'entrée, une heure de coupure repas, une heure de reprise et une heure de fin.

    J'ai déjà demandé de l'aide sur ce forum et Mercatog m'avait répondu avec rapidité et une très grande efficacité j'utilise d’ailleurs son bout de code et je l'en remercie encore.

    Merci a vous par avance.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Octobre 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Octobre 2011
    Messages : 27
    Par défaut
    Après avoir lu la charte des pièces jointe oui ok j'aurai du le lire avant mais quand on est dans du code jusqu'au coup on ne pense pas a lire mais on essaye de sortir de la en trouvant la solution la plus simple et la pour moi c’était de mettre un fichier en pièce jointe.

    Donc je vais essayer d'expliquer avec des mots ma demande.

    Je fais une extract d'un outils qui me donne les log et delog des personnes.
    dans une meme journée une personne peut se loguer et delouer plein de fois mais j'ai besoin de garder que 4 valeurs :
    - 1 entree
    - 1 heure de coupure repas
    - 1 heure de reprise
    - 1 heure de fin

    Donc pour cela il faut je pense supprimer tous les codes ou on a moins de 20min entre 2 log/delog

    J'aimerai afficher en :
    - A1 le nom de l'agent
    - B1 l'heure d’entrée
    - C1 l'heure de coupure repas
    - D1 l'heure de reprise
    - E1 l'heure de fin
    - F1 ID de l'agent

    Mon extract de base me donne le nom de l'agent dans la colonne A, tous les log de connexion dans la colonnes D et tous les delog de la journée dans la colonnes F et pour finir tous les ID des agents dans la colonne AO

    Je ne sais pas par ou commencer a vrai dire

    J’espère avoir était clair sinon demandé moi.

  3. #3
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Voici une procédure qui devrait faire ce que tu souhaites

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    Sub Miseenpage()
     
    Dim iSource As Long
    Dim shSource As Worksheet
     
    Dim shCible As Worksheet
    Dim iCible As Long
    Dim rgCible As Range
     
    Set shSource = Worksheets("Fichier d'origine")
    Set shCible = Worksheets("Fichier que j'aimerai")
     
     
    For iSource = 4 To shSource.Range("A" & shSource.Rows.Count).End(xlUp).Row
     
        'Recherche 'agent sur la feuille cible
        Set rgCible = shCible.Range("A:A").Find(what:=shSource.Range("A" & iSource).Value, lookat:=xlWhole)
     
        If rgCible Is Nothing Then
            'Ajout de l'agent
            iCible = shCible.Range("A" & shCible.Rows.Count).End(xlUp).Row + 1
            shCible.Range("A" & iCible).Value = shSource.Range("A" & iSource).Value
        Else
            iCible = rgCible.Row
        End If
     
        'Ajoute les heures
        If shCible.Range("B" & iCible).Value = "" Then
            shCible.Range("B" & iCible).Value = shSource.Range("D" & iSource).Value
            shCible.Range("C" & iCible).Value = shSource.Range("F" & iSource).Value
            GoTo suite
        End If
     
        If DateDiff("n", TimeValue(shCible.Range("C" & iCible).Text), TimeValue(shSource.Range("D" & iSource).Text)) < 20 Then
            shCible.Range("C" & iCible).Value = shSource.Range("F" & iSource).Value
            GoTo suite
        End If
     
         If shCible.Range("D" & iCible).Value = "" Then
            shCible.Range("D" & iCible).Value = shSource.Range("D" & iSource).Value
            shCible.Range("E" & iCible).Value = shSource.Range("F" & iSource).Value
            GoTo suite
        End If
     
        If DateDiff("n", TimeValue(shCible.Range("E" & iCible).Text), TimeValue(shSource.Range("D" & iSource).Text)) < 20 Then
            shCible.Range("E" & iCible).Value = shSource.Range("F" & iSource).Value
            GoTo suite
        End If
     
    suite:
        shCible.Range("F" & iCible).Value = shSource.Range("AO" & iSource).Value
     
     
     
    Next iSource
     
    End Sub

  4. #4
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Octobre 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Octobre 2011
    Messages : 27
    Par défaut
    Merci pour ta réponse

    Quand j’exécute le code il me donne un code erreur 13 avec une incompatibilité de type

    quand je fais debogage il bloque sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If DateDiff("n", TimeValue(shCible.Range("C" & iCible).Text), TimeValue(shSource.Range("D" & iSource).Text)) < 20 Then
    dans la feuille "Fichier que j'aimerai" il me donne quelque valeur

  5. #5
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Octobre 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Octobre 2011
    Messages : 27
    Par défaut
    en faite cela fonctionne très bien.

    Il fallait que je mette mes cellule en format heure

    Un grand merci pour la réponse jfontaine

  6. #6
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Cela provient du format des cellules

    Ajoutes cette ligne juste avant le commentaire "Ajoutes les heures"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    shCible.Range("B" & iCible & ":E" & iCible).NumberFormatLocal = "h:mm;@"
     
    'Ajoute les heures

  7. #7
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Octobre 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Octobre 2011
    Messages : 27
    Par défaut
    nickel merci sa fonctionne très bien.

    Si je peux abuser en testant sur plusieurs jours j'ai trouvé 1 erreur avec le code.

    Un agent a eu un log et delog sur la même heure en début de poste donc au lieu d'avoir ses heures normal j'ai :

    14:00:00	14:00:00	15:15:00	18:31:00
    alors que j'aurai du avoir
    14:00:00	18:31:00	19:01:00    21:45:00
    on peut mettre une condition pour éviter cela ?

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

Discussions similaires

  1. [Débutant] Mise en forme d'une page
    Par Aline S dans le forum Configuration
    Réponses: 2
    Dernier message: 03/07/2015, 03h10
  2. Garder la mise en forme d'une page web à l'impression
    Par 7ider5 dans le forum Débuter
    Réponses: 2
    Dernier message: 21/02/2013, 13h10
  3. [XL-2003] Mise en forme d'une page en VBA
    Par Naru80 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 24/10/2011, 22h43
  4. Comment se passer des <table> pour la mise en forme d'une page
    Par gael dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 12/11/2008, 20h06
  5. Réponses: 5
    Dernier message: 02/01/2007, 15h19

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