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
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 |
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é.
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 :
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)
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."
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 :
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 |
Partager