J'ai obtenu ce code qui m'a permis de régler le problème qui se posait à moi. Pour adapter ce code à mes situations, je me retrouve toujours bloquer. J'avoue être un débutant en VBA
Lorsque cette séquence s’exécute, j’obtiens dans la cellule de BM9 (soit "Déf." lorsque "Déf." se trouve dans BA9 et BB9 ; soit le total des valeurs divisé par 2 même si l’une des cellules (BA9 ou BB9 renferme "Déf."). Bon résultat recherché.Code:
1
2
3
4
5
6
7 Set Plage = Range("BM9:BM" & Range("c1048576").End(xlUp).Row) ' On définit la plage à impacter Formule = "=IF(BA9=""Déf."",IF(BB9=""Déf."",""Déf.""),sum(BA9,BB9)/2)" ' Transcription de la formule "française" au format international (perso, je préfère) Plage.Formula = Formule ' Application de la formule sur la plage définie (équivaut à sélectionner la plage en Excel et à valider la formule par CTRL+ENTER ' Eventuellement, si tu veux figer les calculs par un copier/coller spécial valeurs Plage.Copy Plage.PasteSpecial xlPasteValues Application.CutCopyMode = False
Deux autres problèmes se posent à moi :
1) Je me retrouve dans le cas de 3 cellules c'est-à-dire BA9, BB9 et BC9, j’ai tenté cette formule :
Lors de l’exécution de cette formule, lorsqu’il y a "Déf." dans les trois cellules, il m’affiche "#NOM ?" dans la cellule BM9. Alors comment faire pour obtenir "Déf."Code:Formule = "=IF(BA9=""Déf."",IF(BB9=""Déf."",IF(BC=""Déf."",""Déf."")),sum(BA9,BB9,BC9)/3)" ' Transcription de la formule "française" au format international (perso, je préfère)
2) Je veux obtenir la somme des valeurs de (C8 à J8) dont les moyennes de (C9 à J9) sont supérieures ou égales à 10 dans la cellule K9. Formule que je veux qu’elle s’exécute automatiquement pour les autres cellules ("K9 :K")
J’ai donc tenté ceci qui ne donne rien :
Code:
1
2
3
4
5
6
7 Set Plage = Range("K9:K" & Range("c1048576").End(xlUp).Row) ' On définit la plage à impacter Formule = "=SumIf("C9:J9", ">=10", "C8:J8")" ' Transcription de la formule "française" au format international (perso, je préfère) Plage.Formula = Formule ' Application de la formule sur la plage définie (équivaut à sélectionner la plage en Excel et à valider la formule par CTRL+ENTER ' Eventuellement, si tu veux figer les calculs par un copier/coller spécial valeurs Plage.Copy Plage.PasteSpecial xlPasteValues Application.CutCopyMode = False