Résolu XL 2010 faire fonction countif/sumif en VBA

yahya belbachir

XLDnaute Junior
Bonjour
de retour
je veux réaliser un plan statistique qui a pour but de m'envoyer des résultats de la base des données"Feuil1" vers planning statistique,je l'ai déjà effectué avec des formules,
ma question est ce que je puisse l'effectué en VBA?
mon fichier çi joint porte des explications de plus.
merci
 
Ce fil a été résolu! Aller à la solution…

Fichiers joints

yahya belbachir

XLDnaute Junior
Bonjour j'ai pu resoudre le premier pas d'effectuer l'application countifs en vba dansla (feuille2).
ce que je n'arrive pas à faire, c'est d'effectuer l'opération countifs entre deux dates,dans la (feuille3)
voiçi mon fichier si possible de me trouver une bonne solution.
 

Fichiers joints

Dudu2

XLDnaute Occasionnel
Des formules disparaissent ? C'est étrange ! Pourquoi ? D'autres que toi manipulent ce fichier ?
Dans ce cas, il faut verrouiller les cellules qui contiennent des formules et protéger la feuille avec un mot de passe vide (voir outil joint).

Si tu veux vraiment faire du VBA, il y a 2 autres options:
- Replacer les formules SOMMEPROD dans les cellules par le code
- Utiliser Application.WorksheetFunction.SumProduct plutôt que le .CountIfs au moins pour le 2ème car je ne sais pas faire avec le CountIfs.

Edit: Classeur supprimé
 
Dernière édition:

Dudu2

XLDnaute Occasionnel
J'ai modifié le fichier de mon dernier post (outil pour verrouiller les cellules contenant une formule) pour:
- corriger ou améliorer des messages,
- accélérer le traitement avec un Application.ScreenUpdating,
- déverrouiller toutes les cellules de la feuille ne contenant pas de formule (et pas seulement celles du UsedRange).
 
Ce message a été identifié comme étant une solution!
Dernière édition:

yahya belbachir

XLDnaute Junior
J'ai modifié le fichier de mon dernier post (outil pour verrouiller les cellules contenant une formule) pour:
- corriger ou améliorer des messages,
- accélérer le traitement avec un Application.ScreenUpdating,
- déverrouiller toutes les cellules de la feuille ne contenant pas de formule (et pas seulement celles du UsedRange).
merci infiniment Dudu,cela est professionnelle
 

Dudu2

XLDnaute Occasionnel
En améliorant j'ai (presque évidemment !) introduit un (petit) bug de compteur.
Du coup j'ai encore amélioré :p !
Avec des fonctions supplémentaires de coloriage des cellules (hors MFC) pour mieux les repérer.
Le nouveau fichier est toujours dans le post précédent lui-même modifié pour l'y inclure.
 

Dudu2

XLDnaute Occasionnel
Comme c'est un truc un peu complexe (gestion des colorisations sur plusieurs classeurs/feuilles en parallèle), en cas de bug rencontré, me donner le scénario pour reproduire.
Bien prendre le dernier fichier placé ce jour à 15h00 !
 
Ce message a été identifié comme étant une solution!

yahya belbachir

XLDnaute Junior
Comme c'est un truc un peu complexe (gestion des colorisations sur plusieurs classeurs/feuilles en parallèle), en cas de bug rencontré, me donner le scénario pour reproduire.
Bien prendre le dernier fichier placé ce jour à 15h00 !
Bonjour Dodu,
veuillez m'excuser je nai pas bien remarqué,ceci est vraiment bon,moi j'ai déjà fais avec le premier,mais je pense avec les Couleurs MFC,ce sera mieux pour savoir les formules verrouiller.
sincérement je vous remercie pour votre aide.
Cordialement
YAHYA
 

Dudu2

XLDnaute Occasionnel
Bonjour Yahya,

Tu peux clarifier ? Est-ce que tu veux dire que pour mettre en couleur les cellules je ferais mieux d'utiliser une MFC au lieu de les coloriser directement en utilisant .Interior.Color ?

C'est sans doute vrai avec les cellules contenant une formule car je pourrais créer une MFC (priority 1) en utilisant la fonction Excel ESTFORMULE pour la MFC. Je vais créer une autre version pour utiliser cette méthode.

Par contre il n'y a aucune fonction Excel indiquant si une cellule est verrouillée. Et là je suis obligé de tester les cellules directement et placer la couleur sur la cellule, ce qui n'a pas d'effet si la cellule est colorée pour une MFC quelconque qui prend la priorité sur le .Interior.Color !
Sauf à créer une fonction personnalisée et l'utiliser dans une MFC (priority 1). Je vais voir ça.
 

yahya belbachir

XLDnaute Junior
Bonjour Yahya,

Tu peux clarifier ? Est-ce que tu veux dire que pour mettre en couleur les cellules je ferais mieux d'utiliser une MFC au lieu de les coloriser directement en utilisant .Interior.Color ?

C'est sans doute vrai avec les cellules contenant une formule car je pourrais créer une MFC (priority 1) en utilisant la fonction Excel ESTFORMULE pour la MFC. Je vais créer une autre version pour utiliser cette méthode.

Par contre il n'y a aucune fonction Excel indiquant si une cellule est verrouillée. Et là je suis obligé de tester les cellules directement et placer la couleur sur la cellule, ce qui n'a pas d'effet si la cellule est colorée pour une MFC quelconque qui prend la priorité sur le .Interior.Color !
Sauf à créer une fonction personnalisée et l'utiliser dans une MFC (priority 1). Je vais voir ça.
Bonsoir Dodu
ça je ne sais pas comment soit dans les cellules,si vous voulez passe moi voire si cela sera mieux d'utiliser MFC que de colorer.
 

Dudu2

XLDnaute Occasionnel
Maintenant, pour coloriser les cellules, des MFC sont utilisées.
Pour les cellules contenant des formules, c'est relativement simple car la fonction Excel ESTFORMULE() peut être utilisée dans la MFC.

Par contre pour les cellules verrouillées, il n'existe pas de fonction Excel et il a donc fallu utiliser une fonction personnalisée IsLocked() dont le code a du être installé dans le classeur concerné car Excel n'accepte pas (hélas !) qu'une MFC utilise une fonction d'un autre classeur !

Le seul inconvénient de la colorisation des cellules est que cela marque le classeur comme modifié.
Un reset du Workbook.Saved = False ne suffit pas à annuler cela. C'est comme ça !

Edit: Classeur supprimé
 
Dernière édition:

Dudu2

XLDnaute Occasionnel
Il y a un problème avec
Workbook.Activate
qui parfois n'affiche pas le classeur dans certaines conditions (non identifiées).

J'ai d'abord trouvé une solution avec:
Workbook.Activate
Workbook.Windows(1).Visible = True


Mais il semble que:
Windows(Workbook..Name).Activate
soit la meilleure solution.

Le fichier a été (encore) modifié en conséquence.
 
Ce message a été identifié comme étant une solution!

Fichiers joints

Dernière édition:

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas