Créer une macro sous excel 2010
Fermé
ppatou83
-
25 mars 2011 à 10:35
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 31 mars 2011 à 15:46
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 31 mars 2011 à 15:46
A voir également:
- Créer une macro sous excel 2010
- Créer une liste déroulante excel - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Créer un compte google - Guide
- Créer un compte gmail - Guide
- Créer une adresse hotmail - Guide
5 réponses
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
25 mars 2011 à 10:51
25 mars 2011 à 10:51
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
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
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
Modifié par michel_m le 25/03/2011 à 14:10
Modifié par michel_m le 25/03/2011 à 14:10
Cette macro renvoie 1 dans la colonne C si la date de la colonne B est un lundi ou un vendredi
Michel
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
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
29 mars 2011 à 16:01
29 mars 2011 à 16:01
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)
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)
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
31 mars 2011 à 11:26
31 mars 2011 à 11:26
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
Clique sur le lien ci-dessus, enregistre le fichier et ouvre-le avec Excel
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
31 mars 2011 à 15:25
31 mars 2011 à 15:25
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.
«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.
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
31 mars 2011 à 15:46
31 mars 2011 à 15:46
De rien, au plaisir de te relire sur le forum
Patrice
Patrice
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
25 mars 2011 à 14:17
25 mars 2011 à 14:17
Une simple formule suffit (en C3, à tirer vers le bas):
=(JOURSEM(B3)=2 )+( JOURSEM(B3)=6)
=(JOURSEM(B3)=2 )+( JOURSEM(B3)=6)
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
25 mars 2011 à 14:47
25 mars 2011 à 14:47
Dimanche=1, samedi = 7
Pour le mardi seulement :
=(JOURSEM(B3)=3 )+0
Pour le mardi seulement :
=(JOURSEM(B3)=3 )+0
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
Modifié par Patrice33740 le 25/03/2011 à 14:54
Modifié par Patrice33740 le 25/03/2011 à 14:54
PS : En France, la semaine commence officiellement le dimanche (contrairement à a norme ISO où c'est le lundi).
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
25 mars 2011 à 15:07
25 mars 2011 à 15:07
Dans la barre des formules, appuyer sur fx / catégorie : tous / choisir une fonction / aide sur cette fonction.
25 mars 2011 à 11:22
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.
25 mars 2011 à 11:33
Et voici le lien.
http://www.cijoint.fr/cjlink.php?file=cj201103/cij4pYppJP.xls
J'espère que c'est correct.
Merci encore
25 mars 2011 à 11:48
je réitère la question
si la date sous ce format "01/02/2010" correspond.
correspond à quoi ? :
25 mars 2011 à 12:01