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 :

Manipulation date 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 éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2009
    Messages : 322
    Par défaut Manipulation date en vba
    Bonjour à tous.

    Je suis perplexe suite à la réaction d'excel dans un de mes fichiers.

    Voici un petit résumé puis ma question:

    Je suis à la création d'un fichier comptable pour le compte d'une fondation à but non lucratif. J'ai une feuille qui permet de comptabiliser les dépôts des donateurs. Cette feuille excel contient la date entre autres informations.
    Une fois les inscriptions terminées, j'ai un bout de code qui enregistre dans une autre feuille les dépôts comptabilisés. Puis, à la fermeture du fichier, les dépôts sont transféré dans un deuxième fichier qui permet aux administrateurs de voir les états financiers.

    J'ai la formule suivante dans une feuille excel de mon deuxième fichier (états financiers):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Si(b4<Ba2;0;si(b4>Ba3;0;+j4)
    Mon problème est le suivant:

    La date dans B4 fait suite au code vba qui ne fait que copier vers l'emplacement suivant. La date en B4 n'est pas plus petite que Ba2 ou plus grande que BA3. Je devrais donc avoir le montant inclus dans J4. Eh bien non.... Le résultats est 0 !

    J'ai cherché une raison mais je ne trouve pas...

    Puis j'ai appuyé sur F2 par erreur sur B4 et fait "enter" et le problème est régler... pour cette ligne...

    Quelqu'un a-t-il déjà eu ce genre de problème ? Peut-être que dans mon code vba, il y a quelque chose à ajouter.

    Notez que j'ai fait des tests en additionnant 1 à la date afin de vérifier si la cellule était pas en format texte et j'ai obtenu le jour suivant de ce date.


    Merci pour votre aide... Je suis en panique car je dois finalier ce fichier sous peu.

    Ci-joint, le code vba

    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    If [depot15] <> 0 Then
            Sheets("Transfert dépots").Select
            Rows("6:6").Select
            Selection.Insert Shift:=xlDown
            Sheets("Dépôts").Select
            Range("AA21:AH21").Select
            Selection.Copy
            Sheets("Transfert dépots").Select
            Range("A6").Select
            Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                :=False, Transpose:=False
            Range("A6").Select
        End If
     
     
     
        Sheets("Dépôts").Select
        Application.CutCopyMode = False
        Range("B7,B9,B11,B13,B15,B17,B19,B21,B23,B25").Select
        Range("B25").Activate
        Range( _
            "B7,B9,B11,B13,B15,B17,B19,B21,B23,B25,B27,B29,B31,B33,B35,C35,C33,C31,C29,C27,C25,C23" _
            ).Select
        Range("C23").Activate
        Range( _
            "B7,B9,B11,B13,B15,B17,B19,B21,B23,B25,B27,B29,B31,B33,B35,C35,C33,C31,C29,C27,C25,C23,C21,C19,C17,C15,C13,C11" _
            ).Select
        Range("C11").Activate
        Union(Range( _
            "G9,E9,E11,G11,G13,E13,E15,G15,G17,E17,E19,G19,E21,G21,E23,G23,B7,B9,B11,B13,B15,B17,B19,B21,B23,B25,B27,B29,B31,B33,B35,C35" _
            ), Range("C33,C31,C29,C27,C25,C23,C21,C19,C17,C15,C13,C11,C9,C7,E7,G7")).Select
        Range("G23").Activate
        Union(Range( _
            "G9,E9,E11,G11,G13,E13,E15,G15,G17,E17,E19,G19,E21,G21,E23,G23,E25,G25,G27,E27,E29,G29,G31,E31,E33,G33,G35,E35,I35,I33,I31,I29" _
            ), Range( _
            "I27,I25,I23,I21,I19,B7,B9,B11,B13,B15,B17,B19,B21,B23,B25,B27,B29,B31,B33,B35,C35,C33,C31,C29,C27,C25,C23,C21,C19,C17,C15,C13" _
            ), Range("C11,C9,C7,E7,G7")).Select
        Range("I19").Activate
        Union(Range( _
            "G9,E9,E11,G11,G13,E13,E15,G15,G17,E17,E19,G19,E21,G21,E23,G23,E25,G25,G27,E27,E29,G29,G31,E31,E33,G33,G35,E35,I35,I33,I31,I29" _
            ), Range( _
            "I27,I25,I23,I21,I19,I17,I15,I13,I11,I9,I7,B7,B9,B11,B13,B15,B17,B19,B21,B23,B25,B27,B29,B31,B33,B35,C35,C33,C31,C29,C27,C25" _
            ), Range("C23,C21,C19,C17,C15,C13,C11,C9,C7,E7,G7")).Select
        Range("I7").Activate
        Union(Range( _
            "G9,E9,E11,G11,G13,E13,E15,G15,G17,E17,E19,G19,E21,G21,E23,G23,E25,G25,G27,E27,E29,G29,G31,E31,E33,G33,G35,E35,I35,I33,I31,I29" _
            ), Range( _
            "I27,I25,I23,I21,I19,I17,I15,I13,I11,I9,I7,K7,M7,K9,M9,M11,K11,K13,M13,M15,K15,K17,M17,K19,M19,K21,M21,B7,B9,B11,B13,B15" _
            ), Range( _
            "B17,B19,B21,B23,B25,B27,B29,B31,B33,B35,C35,C33,C31,C29,C27,C25,C23,C21,C19,C17,C15,C13,C11,C9,C7,E7,G7" _
            )).Select
        Range("M21").Activate
        Union(Range( _
            "G9,E9,E11,G11,G13,E13,E15,G15,G17,E17,E19,G19,E21,G21,E23,G23,E25,G25,G27,E27,E29,G29,G31,E31,E33,G33,G35,E35,I35,I33,I31,I29" _
            ), Range( _
            "I27,I25,I23,I21,I19,I17,I15,I13,I11,I9,I7,K7,M7,K9,M9,M11,K11,K13,M13,M15,K15,K17,M17,K19,M19,K21,M21,M23,K23,K25,M25,M27" _
            ), Range( _
            "K27,K29,M29,M31,K31,B7,B9,B11,B13,B15,B17,B19,B21,B23,B25,B27,B29,B31,B33,B35,C35,C33,C31,C29,C27,C25,C23,C21,C19,C17,C15,C13" _
            ), Range("C11,C9,C7,E7,G7")).Select
        Range("K31").Activate
        Union(Range( _
            "G9,E9,E11,G11,G13,E13,E15,G15,G17,E17,E19,G19,E21,G21,E23,G23,E25,G25,G27,E27,E29,G29,G31,E31,E33,G33,G35,E35,I35,I33,I31,I29" _
            ), Range( _
            "I27,I25,I23,I21,I19,I17,I15,I13,I11,I9,I7,K7,M7,K9,M9,M11,K11,K13,M13,M15,K15,K17,M17,K19,M19,K21,M21,M23,K23,K25,M25,M27" _
            ), Range( _
            "K27,K29,M29,M31,K31,K33,M33,M35,K35,B7,B9,B11,B13,B15,B17,B19,B21,B23,B25,B27,B29,B31,B33,B35,C35,C33,C31,C29,C27,C25,C23,C21" _
            ), Range("C19,C17,C15,C13,C11,C9,C7,E7,G7")).Select
        Range("K35").Activate
        Selection.ClearContents
        Range("B5").Select
        Selection.ClearContents
        Sheets("Programation").Select
        Range("C8").Select
        Selection.Copy
        Range("B8").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False
        Sheets("Dépôts").Select
        Range("B7").Select
    End Sub

    Puis pour le transfert vers les états financier, voici mon code

    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    CeFichier = ThisWorkbook.Name
        FichierFinanciers = "C:\test\FMLFinanciers.xls"
        FichierFinancierPourRetour = "FMLFinanciers.xls"
     
        Workbooks.Open Filename:=FichierFinanciers
        [FichierMaitre] = CeFichier
        Windows(CeFichier).Activate
     
        Do Until Sheets("Transfert Dépots").Range("A6") = ""
     
         Sheets("Transfert Dépots").Select
        Range("A6:H6").Select
        Selection.Copy
        Windows(FichierFinancierPourRetour).Activate
     
     
     
        Sheets("recettes").Select
        Range("B4").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Range("B4:V4").Select
        Application.CutCopyMode = False
        Selection.Copy
        Range("a5").Select
        Selection.End(xlDown).Select
        ActiveCell.Offset(1, 1).Activate
     
     
        ActiveSheet.Paste
     
     
        Range("A4").Select
        Selection.Copy
        Range("a5").Select
        Selection.End(xlDown).Select
        ActiveCell.Offset(1, 0).Activate
     
            Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                :=False, Transpose:=False
     
         Windows(CeFichier).Activate
         Sheets("Transfert Dépots").Select
         Rows("6:6").Select
         Selection.Delete
         Windows(FichierFinancierPourRetour).Activate
         Sheets("Recettes").Select
         Range("B4:I4").Select
       Selection.ClearContents
        Sheets("Programation").Select
        Range("C5").Select
        Selection.Copy
     
        Range("B5").Select
            Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                :=False, Transpose:=False
     
                Windows(CeFichier).Activate
     
        Sheets("Transfert Dépots").Select
     
        Loop
     
        Windows(FichierFinancierPourRetour).Activate
        ActiveWorkbook.Save
        ActiveWorkbook.Close
     
        Windows(CeFichier).Activate
     
     
    End Sub
    dlight

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 592
    Par défaut
    La question est un peu trop longue.
    Peux tu synthétiser ce qui ne fonctionne pas ou fonctionne mal?

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2009
    Messages : 322
    Par défaut Gestion des dates
    Voilà !

    Après quelques manipulations des données, ces données sont stockées dans un fichier pour les états financiers.
    En utilisant si > et si < que cette date, la formule ne fonctionne pas même si le critère est bon.

    La raison, la date suite à la manipulation par vba...

    Si je fais F2 sur cette date puis ENTER, ça règle le problème... le si< ou > fonctionne sans autre intervention.

    Ma question : Pourquoi ... et si quelqu'un à déjà eu ce type de problème avec des dates.

    Merci à l'avance

  4. #4
    Membre éclairé
    Inscrit en
    Octobre 2008
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 240
    Par défaut
    Je pense à deux choses:
    1) Quel est le format de la colonne J?
    2) Est-ce que tu es bien en calcul automatique?

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut dlight et le forum
    Ton problème me laisse perplexe...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Si(b4<Ba2;0;si(b4>Ba3;0;+j4)
    Ta première instruction donnée est déjà incomplête (2 "(" pour 1 ")").
    Tes macros sont bourrées de Select/Selection, ce qui ne me donne pas envie de décrypter tes macros, et vu ton dernier poste, ça se résume à un simple format de cellule : Si tu fait une édition de la cellule et que ça fonctionne, c'est qu'avant, Excel reconnaissait vraisemblablement un texte et qu'après, il reconnaît une date. Essaies de mettre un format de cellule Date avant de copier, ou après si ça ne marche toujours pas.
    A+

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2009
    Messages : 322
    Par défaut Gestion de date
    Bonjour à tous.

    Merci pour vos réponses. Elles m'ont permis de trouver la raison et comme toujours Gorfael vous aviez raison...

    Je vais poursuivre, petit à petit, mes expérience dans ce merveuilleux monde du VBA

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

Discussions similaires

  1. Problème de date en vba-access 2000
    Par rob2-9 dans le forum Access
    Réponses: 1
    Dernier message: 30/08/2006, 12h13
  2. [débutant] recherche sur dates en VBA
    Par tojiji dans le forum Access
    Réponses: 4
    Dernier message: 10/07/2006, 11h51
  3. [VBA-E] Compatibilité de Date dans VBA Excel
    Par dorschner dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/05/2006, 19h25
  4. [C#] Manipulation Date
    Par diaboloche dans le forum Windows Forms
    Réponses: 4
    Dernier message: 11/02/2006, 13h30
  5. Réponses: 7
    Dernier message: 16/09/2005, 10h14

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