Créer une macro sous excel 2010

ppatou83 -  
Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Je ne maitrise absolument pas Excel.
Afin de me faciliter la tâche, je souhaite créer une macro qui mettra une quantité égale à 1 si la date sous ce format "01/02/2010" correspond.
Je ne sais pas si je suis très clair.
Mais bon on verra bien ....
Merci d'avance

5 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour
    Je ne sais pas si je suis très clair.
    loupé!

    si la date sous ce format "01/02/2010" correspond.
    correspond à quoi ?

    Au besoin, mettre le classeur sans données confidentielles en pièce jointe (format XL97-2003) sur
    http://cijoint.fr/
    et coller le lien proposé dans le message de réponse
    1
    1. ppatou83
       
      Je suis vraiment pas douée pas plus avec internet on dirait!! J'ai cliqué sur déposer mais j'ai pas vu comment mettre le lien
      tant pis merci quand même.
      c'était un format date, j'ai besoin de mettre une quantité si la date correspond à celle que j'ai sélectionnée.
      0
    2. ppatou83
       
      Voilà je crois que c'est dans le bon format.
      Et voici le lien.
      http://www.cijoint.fr/cjlink.php?file=cj201103/cij4pYppJP.xls
      J'espère que c'est correct.
      Merci encore
      0
    3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      merci pour le classeur

      je réitère la question

      si la date sous ce format "01/02/2010" correspond.
      correspond à quoi ? :
      0
    4. ppatou83
       
      Oup's! Je dois mettre une quantité dans la colonne C chaque Lundi et vendredi de toutes les dates présentes dans la colonne B. Là c'est mieux
      0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Cette macro renvoie 1 dans la colonne C si la date de la colonne B est un lundi ou un vendredi

    Sub lundi_vendredi() 
    Dim fin As Integer 
    Dim jour_sem as Byte
    Dim t_date, t_out 
    
    fin = Cells(Rows.Count, 2).End(xlUp).Row 
    t_date = Application.Transpose(Range("B3:B" & fin)) 
    
    ReDim t_out(1 To UBound(t_date)) 
    For cptr = 1 To UBound(t_date) 
        jour_sem = Weekday(t_date(cptr), 1) 
        If t_date(cptr) > 30000 And (jour_sem = 6 Or jour_sem = 2) Then 
            t_out(cptr) = 1 
        End If 
    Next 
    
    Application.ScreenUpdating = False 
    Range("C3:C" & UBound(t_out)) = Application.Transpose(t_out) 
    End Sub

    Michel
    1
    1. ppatou83
       
      Merci ça marche. C'est sympa de vous être donné tout ce mal.
      Bonne après midi
      0
  3. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    Plutôt que supprimer les lgnes, je pense que l'utilisation d'un filtre automatique suffit.

    Voici une proposition à partir de ton fichier :
    http://www.cijoint.fr/cjlink.php?file=cj201103/cijB6sCjbg.xlsx

    Sers-toi des petits boutons sur la ligne 4 pour choisir ce que tu veux. Tu devrais rapidement comprendre comment ça fonctionne

    Les totaux sont en haut de la page (c'est plus pratique).

    (Pour ré-afficher toutes les lignes : Données / Trier et Filtrer / Effacer)
    1
    1. ppatou83
       
      Bonjour Patrice
      Je te remercie pour ton aide, mais je n'arive pas à récupérer le document. J'ai enregistré le fichier zip, mais quand je veux l'ouvrir je n'ai que du texte (en chinois pour moi...).
      Peux tu me l'envoyer directement sur mon mail??
      0
    2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
       
      Il s'agit pas d'un fichier zip mais d'un fichier Excel (xlsx).
      Clique sur le lien ci-dessus, enregistre le fichier et ouvre-le avec Excel
      0
    3. ppatou83
       
      Merci beaucoup, la formule qui est dans la colonne D jour, c'est pour afficher le jour en texte?
      C'est toi qui l'a ajouté? J'ai compris le principe de filtrage, mais pas celui des formules en D1 D2.
      C'est trop te demander de m'expliquer, pour pouvoir le reproduire sur mes différents documents.
      0
  4. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    Bonjour,

    «la formule qui est dans la colonne D jour, c'est pour afficher le jour en texte? »
    En effet, =TEXTE(JOURSEM(C6);"jjjj") permet d'obtenir le jour en texte de la date située en C6

    « formules en D1 D2. C'est trop te demander de m'expliquer, ... »
    - D'abord en G1, j'ai mis l'adresse de la plage des cellules dans lesquelles je vais faire mes calculs (B5:B5000). J'ai 5000 pour avoir une marge suffisante pour contenir toutes les valeurs (tu peux l'adapter à ton besoin).
    - Dans les deux formules j'utilise INDIRECT(G2) pour désigne la plage (B5:B5000) : cela permet d'ajouter et/ou de supprimer des cellules dans cette plage sans qu'Excel ne modifie automatiquement les formules situées en D1 et D2. Sinon Excel adapterait automatiquement l'adresse de la plage et si par exemple on supprimait toutes des lignes, la formule passerait en erreur #REF!.

    En D1 =NBVAL(INDIRECT(G1)) sert à compter le nombre de valeurs situées dans la plage dont l'adresse est indiquée en G1, c'est à dire le nombre de valeurs dans la plage B5:B5000

    En D2 =SOUS.TOTAL(3;INDIRECT(G1)) sert aussi à compter le nombre de valeurs situées dans la plage dont l'adresse est indiquée en G1, mais la formule ne compte que les valeurs affichées (elle ne compte pas les valeurs masquées par le filtre).

    En règle générale, pour obtenir des information sur une formule, il suffit d'appuyer sur fx situé dans la barre des formules pour faire apparaitre l'assistant formules. Lorsque plusieurs formules sont imbriquées (par exemple INDIRECT), sans fermer l'assistant, en cliquant sur le nom de la fonction imbriquée, dans la barre des formules (dans ce cas INDIRECT), on obtient l'assistance pour cette fonction. Si cette assistance n'est pas suffisante, on peut alors cliquer sur le lien Aide sur cette fonction pour obtenir des explications plus détaillées.
    1
    1. ppatou83
       
      Une dernière fois merci encore pour tes explications.
      Je vais à présent pouvoir avancer mon travail plus facilement et en espérant ne plus avoir à te déranger à ce sujet.
      Bonne fin de journée.
      0
    2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
       
      De rien, au plaisir de te relire sur le forum

      Patrice
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    Une simple formule suffit (en C3, à tirer vers le bas):
    =(JOURSEM(B3)=2 )+( JOURSEM(B3)=6)
    0
    1. ppatou83
       
      ça fonctionne aussi. J'essai de comprendre comment pour faire la même chose avec Mardi et Jeudi mais je n'y arrive pas faut-il prendre le dimanche comme premier jour? Encore un petit coup de main serait le bien venu. !!!
      0
    2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
       
      Dimanche=1, samedi = 7
      Pour le mardi seulement :
      =(JOURSEM(B3)=3 )+0
      0
    3. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
       
      PS : En France, la semaine commence officiellement le dimanche (contrairement à a norme ISO où c'est le lundi).
      0
    4. ppatou83
       
      Je vous prie d'excusez mon ignorance, je vais donc chercher comment faire la formule pour Mardi et jeudi.
      Où puis-je trouver des formules de calculs? J'ai souvent besoin d'aide ne sachant pas grand chose sur Ecxel, je suis autodidacte.
      0
    5. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
       
      Dans la barre des formules, appuyer sur fx / catégorie : tous / choisir une fonction / aide sur cette fonction.
      0