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 :

Calcul de dates incorrect


Sujet :

Macros et VBA Excel

  1. #21
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Re
    Voila la dernière fournée

    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
    Sub test4()
    Dim CelCol As Range, C As Range
     
    For Each CelCol In Sheets(1).Range("B2:B23") 'on scann la colonne deja
        If CelCol.Value <> "" And CelCol.Value2 > 0 Then
            'On coche les case qui doivent l'etre
            'With Sheets(1).Range(Sheets(1).Cells(CelCol.Row, "C"), Sheets(1).Range("B1").End(xlToRight).Offset(CelCol.Row - 1, -((Sheets(1).Range("B1").End(xlToRight).Column - 2) - CInt(CelCol.Value2))))
            If CelCol.Value2 > Sheets(1).Range("B1").End(xlToRight).Column - 2 Then
                'La somme depasse le nombre de jours
                'On met la case en couleur
                CelCol.Interior.ColorIndex = 4
            Else
                'On remet la couleur neutre par defaut
                CelCol.Interior.ColorIndex = xlNone
                With Sheets(1).Range(Sheets(1).Cells(CelCol.Row, "C"), Sheets(1).Cells(CelCol.Row, 2 + CelCol.Value2))
                    .Borders(xlDiagonalDown).LineStyle = xlContinuous
                    .Borders(xlDiagonalDown).Weight = xlThin
                    .Borders(xlDiagonalUp).LineStyle = xlContinuous
                    .Borders(xlDiagonalUp).Weight = xlThin
                End With
     
                'On decoche celle qui doivent l'etre
                With Sheets(1).Range(Sheets(1).Cells(CelCol.Row, 3 + CInt(CelCol.Value2)), Sheets(1).Range("B1").End(xlToRight).Offset(CelCol.Row - 1, 0))
                    .Borders(xlDiagonalDown).LineStyle = xlNone
                    .Borders(xlDiagonalUp).LineStyle = xlNone
                End With
            End If
        End If
    Next
    End Sub
    Avec ça même si tu change les valeurs a la baisse, ça décoche les cases qui ne doivent pas être cochées.

    J'ai également simplifié grandement mon 1er With, je laisse quand même tout ça dans mon 1er post ça te permet de te familiariser avec les possibilités d'excel (et y'en a bien d'autre, que je connais ou pas d'ailleurs ) A force d'avoir le nez dedans j'ai fini par ne pas utiliser la voie la plus rapide et la plus simple mais je pense (quelle prétention ) que c'est chose faite

    Pour la Function que tu voudrais faire, la par contre je vois pas trop l'utilité, une function est une sub qui te renvoie une valeur (ou un objet), que voudrais tu renvoyer ?

    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  2. #22
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 20
    Par défaut
    En fait, dans la version actuelle du programme, si par exemple qqn paie 8, il y aura 8 croix.

    Et si cette même personne paie 4 quelques jours plus tard, je remplace manuellement 8 par 12 et comme 12 > 10, je souhaiterais que :

    - 10 croix apparaissent dans le 1er onglet (avec toujours un fond de couleur appliqué sur la cellule en B pour mettre en évidence que plus de 10 paiements ont été effectués) MAIS QU'EN PLUS, toutes les croix supérieures à 10 soient inscrites à la même position (même référence) dans un autre onglet.

    Pour l'avantage de la fonction, je pense qu'étant donné que tous les joueurs ne paient pas en même temps, on verra plus clairement les changements, ligne par ligne, si les modifications avaient lieu "en cours de frappe".

    Ex. : je remplace 8 par 9 en B2 et en conséquence, seuls le calcul de la ligne 2 est refait et donc une croix est ajoutée.

    Avec ça, je devrais obtenir une version évitant toutes les incohérences.

    Merci de ton aide !!!

  3. #23
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    SAlut
    Bon je te fais ca mais maintenant pour le reste tu propose du code et on voit ce qui va pas, par ce que le je suis en train de faire le boulot a ta place et c'est pas le but de se forum

    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
    Sub test5(ByVal Target As Range)
    Dim SomLimit As Integer
     
    If Target.Value <> "" Then
        'On coche les case qui doivent l'etre
        'On prend en compte la somme versé
        SomLimit = Target.Value2
        If SomLimit > Sheets(1).Range("B1").End(xlToRight).Column - 2 Then
            'La somme depasse le nombre de jours
            SomLimit = Sheets(1).Range("B1").End(xlToRight).Column - 2
            'On met la case en couleur
            Target.Interior.ColorIndex = 4
        Else
            'On remet la couleur neutre par defaut si la somme est inferieur ou egale a la somme maxi
            Target.Interior.ColorIndex = xlNone
        End If
     
        If Target.Value2 <> 0 Then 'Pas besoin de mettre des croix, puisque 0 euro
            With Sheets(1).Range(Sheets(1).Cells(Target.Row, "C"), Sheets(1).Cells(Target.Row, 2 + SomLimit))
                .Borders(xlDiagonalDown).LineStyle = xlContinuous
                .Borders(xlDiagonalDown).Weight = xlThin
                .Borders(xlDiagonalUp).LineStyle = xlContinuous
                .Borders(xlDiagonalUp).Weight = xlThin
            End With
        End If
     
        If Target.Interior.ColorIndex <> 4 Then 'Pas besoin d'en enlever, puisque somme maxi
            'On decoche celle qui doivent l'etre
            With Sheets(1).Range(Sheets(1).Cells(Target.Row, 3 + CInt(SomLimit)), Sheets(1).Range("B1").End(xlToRight).Offset(Target.Row - 1, 0))
                .Borders(xlDiagonalDown).LineStyle = xlNone
                .Borders(xlDiagonalUp).LineStyle = xlNone
            End With
        End If
    End If
    End Sub
    Et ceci dans ThisWorkSheet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    If Target.Column = 2 And Target.Offset(0, -1).Value <> "" Then 'si la case modifié se trouve en colonne B et dans la plage des joueurs (case joueur non vide)
        Module1.test5 Target
    End If
     
    End Sub
    A++
    Bon courrage
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  4. #24
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 20
    Par défaut
    OK Super, un tout grand merci.

    Je vais regarder en détails pcq pour l'instant, il me retourne "argument non facultatif".

    Je vais aussi travailler sur 2 dernières choses :

    1.] remplacer la bordure intérieure par des "X" (c'est idiot de ma part d'avoir compliqué le code à ce point)

    2.] demander au programme, de colorer le nom du joueur en rouge si le dernier paiement effectué est inférieur à la date du jour : aujourdhui()

    Encore merci pour tout !!

    Je te tiens au courant des mes péripéties

  5. #25
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 20
    Par défaut
    Toujours cette réponse "Argument facultatif"..

    Je ne vois pas le lien vers le nouvel onglet.

    C'est comme s'il appelait une Sub non définie ...

  6. #26
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    SAlut
    Bizard ça marche très bien chez moi, le mieux serait de faire du pas à pas pour voir quelle ligne pose problème.
    Tu click sur la 1er ligne de code de ThisWorkSheet.Change et tu appuis sur F9, ça va te mettre la ligne en rouge.
    Ensuite tu va modifier une valeur dans ton tableau, normalement si le code est bien placé, VBA va venir au 1er plan et une flèche va pointé sur la ligne rouge, tu appuis ensuite sur F8 pour avancer pas a pas dans ton code et voir ou ça plante, quand tu as la ligne ou ça plante post ici
    ++

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  7. #27
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 20
    Par défaut
    Pardonne-moi d'être lent à la détente, mais tu posterais ton fichier, pour que je puisse comparer ?

    Merci.

  8. #28
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    SAlut
    Bien sur
    Le voici
    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  9. #29
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 20
    Par défaut
    Merci !

    Je ne vois qu'un seul onglet, c'est normal ?

    Ce qui dépasse 10 n'est pas inscrit dans l'onglet 1 donc OK, mais n'est pas inscrit dans l'onglet 2 non plus.

  10. #30
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Citation Envoyé par Qwazerty Voir le message
    SAlut
    Bon je te fais ca mais maintenant pour le reste tu propose du code et on voit ce qui va pas, par ce que le je suis en train de faire le boulot a ta place et c'est pas le but de se forum
    Aurais tu, par hazard, oublié que nous somme sur un forum d'entraide, pas un forum ou les gens font tout ton boulot, je veux bien être gentil, mais il faudrait peut être aussi t'investir un peu dans ton projet et proposer des choses, des idées, le gros du code est fait, alors essais donc de le modifier pour faire ce que tu souhaite.
    Et si tu rencontre des problèmes, tu ouvres un nouveau post pour poser une question précise
    ++Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

Discussions similaires

  1. [Calendar]Problème de calcul de date
    Par valerie90 dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 08/12/2004, 13h13
  2. COUNT + Calcul de DATE
    Par cassi2 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 28/10/2004, 17h35
  3. Resutlat de calcul sur date formaté
    Par neness dans le forum SQL
    Réponses: 6
    Dernier message: 16/06/2004, 16h34
  4. SCRIPT CALCULANT LA DATE
    Par Redouane dans le forum ASP
    Réponses: 3
    Dernier message: 17/03/2004, 10h10
  5. Calcul sur date
    Par Thomad dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/09/2003, 09h55

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