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 :

vba-exel macro if+date


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2010
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 60
    Par défaut vba-exel macro if+date
    Bonjour,

    Je travaille sur un projet et je suis debutante en VBA
    J'ai besoin de savoir comment on peut écrire un code permettant de dire:
    Si la cellule C4(date) et vide ou la date(autre date:F4) est supérieur à la date en C4 on affecte 0.

    Merci d'avance

  2. #2
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 68
    Par défaut
    bonjour essaye d'adapter ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if range("C4").value = "" then
    'action a effectuer si la cellule est vide
    elseif range("C4").value < range("F4").value then
    'action a effectuer si la date C4 est plus recente que F4
    endif
    bye

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2010
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 60
    Par défaut
    C'est encore moi rebonjour

    au fait la première action à entretenir c'est une boucle "do until"


    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
    Sub test_si()
     
    Application.ScreenUpdating = False
     
    Sheets("CA(PS)").Select
     
    If Range("E10").Value = "" Then
        'selection de la première cellule du code analytique nommée"DebListe" de la feille "CA(PS)"
     
    Sheets("CA(PS)").Range("DebListe").Select
     
        Do Until IsEmpty(ActiveCell)
     
        'selection de la cellule code analytique dans la feuille "Calcul_prevision (PS)" et la nommer "ActiveCell"
     
            Sheets("Calcul_prevision(PS)").Range("CodePrev") = ActiveCell
     
            Sheets("Calcul_prevision(PS)").Select
     
         'copier les prévisions calculées à partir de la feuille "Calcul_prevision(PS)"
     
            Range("K32:BF32").Copy
     
            Sheets("CA(PS)").Select
     
        'coller les valeurs copiées dans les cellules convenues dans la feuille "CA(PS)"
     
            ActiveCell.Offset(0, 28).PasteSpecial xlPasteValues
     
     
          ' retourner au code analytique suivant dans la feuille "Calcul_prevision(PS)"
     
            ActiveCell.Offset(1, -28).Select
        Loop
     
    ElseIf Range("E10").Value < Range("AE9").Value Then
     
    "(la je dois affecter 0 au prévisions pr les mois pour lesquel le contrat est deja resilié")
     
    Je fais comment?"
     
    Application.ScreenUpdating = True
    End Sub


    meric encore une fois

  4. #4
    Membre confirmé
    Inscrit en
    Mai 2010
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 60
    Par défaut
    re Rebonjour,
    je clarifie mieux mon problème car j'ai besoin d'aide le plutot possible

    le problème c'est que mon mois en cours change toujours, et que je ne sais pas comment dire on affecte 0 depuis le mois ou on a trouvé la resiliation

    prevision
    Code analytique date de resiliation J2010 F10 M10
    124545 01/02/2010
    124563 on connait pas la date de res
    124569 01/03/2010
    ......
    ......
    .......
    ma boucle est prgrammée de telle facon depuis une autre feulle elle alimente automatiquement ma feuille. ms ma boucle ne prend pas en consideration la date de reslilaition

    la boucle

    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
    Sub test_si()
     
    Application.ScreenUpdating = False
     
        'selection de la première cellule du code analytique nommée"DebListe" de la feille "CA(PS)"
     
    Sheets("CA(PS)").Range("DebListe").Select
     
    Do Until IsEmpty(ActiveCell)
     
        'selection de la cellule code analytique dans la feuille "Calcul_prevision (PS)" et la nommer "ActiveCell"
     
        Sheets("Calcul_prevision(PS)").Range("CodePrev") = ActiveCell
     
        Sheets("Calcul_prevision(PS)").Select
     
         'copier les prévisions calculées à partir de la feuille "Calcul_prevision(PS)"
     
        Range("K32:BF32").Copy
     
        Sheets("CA(PS)").Select
     
        'coller les valeurs copiées dans les cellules convenues dans la feuille "CA(PS)"
     
        ActiveCell.Offset(0, 28).PasteSpecial xlPasteValues
     
     
          ' retourner au code analytique suivant dans la feuille "Calcul_prevision(PS)"
     
        ActiveCell.Offset(1, -28).Select
    Loop
     
    Application.ScreenUpdating = True
    End Sub
    moi je veux ke kon mon curseur vient se placer sur le 'F10" et qui trouve que la date de resiliation est deja passé, au lieu k il m'affecte les prevision deja calcule ds l'autre feuille, il m'affecte des 0 dans les cellule qui suivent, alors k'il continue à m'affecter mes previsions pour les autres. et de la même façon kon on se place sur le "M10" il cesse d'affecter les previsions pr ce code analytique mais il continue à alimenter les autres et ainsi de suite

    J'espère que j'étais clair :S

    Merci

  5. #5
    Expert éminent 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
    Par défaut
    Pour moi ce n'est pas clair.
    Un effort pour bien expliquer. personne ne connait ton fichier. Ce qui est clair pour toi, ne l'est pas forcément pour autrui.
    Par contre, je vois mal d'utiliser les Activecell et les select alors qu'on peut très bien travailler avec les cellules sans les sélectionner

    J'ai essayé de retoucher ton code initial (sans comprendre le but)
    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
    Sub test_si()
    Dim wsCA As Worksheet, wsCP As Worksheet
    Dim Lig As Long, LastLig As Long, i As Long
    Dim Col As Integer
     
    Set wsCA = Sheets("CA(PS)")
    Set wsCP = Sheets("Calcul_prevision(PS)")
    With wsCA
       If .Range("E10").Value = "" Then
          Lig = .Range("DebListe").Row
          Col = .Range("DebListe").Column
          LastLig = .Cells(Rows.Count, Col).End(xlUp).Row
     
          For i = Lig To LastLig
             wsCP.Range("CodePrev") = .Cells(i, Col)
             .Range(.Cells(Lig, Col + 28), .Cells(Lig, Col + 76)).Value = wsCP.Range("K32:BF32").Value
          Next i
       ElseIf .Range("E10").Value < .Range("AE9").Value Then
          '"(la je dois affecter 0 au prévisions pr les mois pour lesquel le contrat est deja resilié")
          'Je fais comment?"
     
          'Affecter aux prévisions, personne ne devine
       End If
    End With
    Set wsCA = Nothing
    Set wsCP = Nothing
    End Sub

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2010
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 60
    Par défaut
    Rebonjour, et dsl pr la perturbation
    Voici mon fichier
    dans la feuille CA(PS), je suis allée cherché les contrat qui ont été resilié dans la CA(PC).
    Après j'ai automatisé avec la macro grace à la macro ke j'ia publié tout à l'heure(la macro n'est pas dans le doc car un doc XLM ne pe etre joint au forum), le calcul des prevision, c a d une fois j remplis le reel dans la feuille CA(PS) les prevsion se calculent (dans la feuille "calcul_prevision) et viennent alimenter les prevision dans le CA(PS).
    Ce que je veux moi c'est enrichir ma macro de telle façon à ce que par ex quand elle trouve que E11=aout2011( dans la page ca(ps)(. excel alimente ma base de donné juste jusqu'à juillet. et après il affecte des 0 à tout le reste .

    J'espere k j'étais plus clair cette fois ci :S


    Merci
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [VBA-E] macro au demarrage d'exel
    Par ludo02 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/01/2007, 11h54
  2. [VBA Excel] convertir une date francaise au format anglais
    Par loacast dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/12/2005, 16h52
  3. [VBA Exel] Copier un fichier xls et lui donner un autre nom
    Par beegees dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 15/11/2005, 17h40
  4. [VBA-E] macro conversion excel vers csv
    Par baboune dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 15/07/2004, 09h23
  5. [VBA-E] Macro ouverture fichier déja ouvert
    Par bhaal76 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/12/2002, 14h30

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