Challenge....formule/macro excell ?

Fermé
Angel2679 - 19 sept. 2010 à 11:08
eriiic
Messages postés
24393
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
26 mai 2022
- 20 sept. 2010 à 18:57
Bonjour à vous,
Voici mon challenge.
J'ai 1 colonne avec des valeurs numériques et des vides distribuées de façon aléatoires :
10
NA
NA
NA
20
30
40
NA
50
NA.....
Je souhaiterais trouver une formule/macro qui me remplace les NA par la moyenne de des cellules juste au dessus et au dessous. Lorsqu'il n'y a qu'une NA, pas de probleme. Mais les problemes arrivent quand plusieurs NA se suivent.... Je pensais à une formule du type : = Cellule au dessus+[(cellule dessous-cellule dessus)/nombre de cellule vide+1]. Mais je ne vois pas comment faire cette formule dans excell ?

Quelqu'un aurait-il une solution ?

Merci et bonne journée !


<config>Windows vista / Mozilla <Excell 2007>

6 réponses

eriiic
Messages postés
24393
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
26 mai 2022
7 078
Modifié par eriiic le 19/09/2010 à 19:36
re,

En vba si tu veux bien, par formule ça risque d'être relou...
A mettre dans le code de la feuille (ou dans un module) :
Sub completer() 
    Dim c As Range 
    For Each c In Selection 
        If c = "" Then 
            c = c.Offset(-1, 0) + (c.End(xlDown) - c.Offset(-1, 0)) / (c.End(xlDown).Row - c.Row + 1) 
        End If 
    Next c 
End Sub

exemple

eric

edit : clic-droit sur le nom de la feuille et 'visualiser le code' pour accéder à l'éditeur vba
1
eriiic
Messages postés
24393
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
26 mai 2022
7 078
Modifié par eriiic le 19/09/2010 à 11:26
Bonjour,

Quand tu dis NA il faut comprendre la valeur d'erreur #N/A ?
Si c'est la valeur d'erreur c'est que tu as des formules et la possibilité de le faire par formule dépend de celles-ci (si tu remplaces #N/A par une valeur ça faussera tout pour les suivants...)

Un fichier exemple serait le bienvenu. cijoint.fr et coller ici le lien fourni
eric
0
Bonjour, et merci de repondre.

Non, en fait, j'ai des cellules vides, sans valeurs, pas des valeurs d'erreurs #N/A (voir fichier ci-joint : http://www.cijoint.fr/cjlink.php?file=cj201009/cijx8dG44X.xls ).
et le but est de remplacer les cellules vides comme expliquer ci-avant.
0
eriiic
Messages postés
24393
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
26 mai 2022
7 078
Modifié par eriiic le 19/09/2010 à 13:23
Pas clair ce que tu désires...
Sur cet exemple :
10
vide
vide
vide
20
30

que désires-tu entre 10 et 20 ?
15 sur les 3 cellules ?
5 sur les 3 ?
autre chose ?

Explique aussi ton but final, tu n'as peut-être pas pris la bonne direction en voulant remplir ces cellules vides (?)

eric
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Entre 10 et 20, je veux 12.5 puis 15 puis 17.5. Bref chaque cellule vide doit être complétée par la moyenne de la cellule avant et de la cellule après. Exemple pour le cellule n°2 :
=10+[(20-10)/4].

Mon objectif :
Je cherche à généraliser avec la formule
= Cellule au dessus+[(cellule dessous-cellule dessus)/nombre de cellule vide+1]. Mais je ne sais pas comment la taper dans excell.

Mon but ultime :
remplir les cellules vides (je dois ensuite calculer un indice pour chaque cellule, je dois donc combler tous les vides) par une valeur en respectant la loi de distribution des valeurs connues. Par exemple, si entre 10 et 20 j'ai 3 cellules vides, je dois passer graduellement de 10 à 20 en 3 étapes identiques : 10/12.5/15/17.5/20....
0
Bonjour,
Et merci de ta réponse malgré mes explications peut-être un peu floues. La macro fonctionne impeccablement. J'en étais resté aux formules car les macros je ne maitrise pas tellement. Dailleurs, comment puis-je faire pour enregistrer cette macro afin de pouvoir la réutiliser dans plusieurs fichier excell différents ?

Merci encore, c'est tout à fait ce que je cherchais !!!Bravo à toi !!!

Bonne journée,

Angel .
0
eriiic
Messages postés
24393
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
26 mai 2022
7 078
20 sept. 2010 à 18:57
Bonjour,

Plusieurs solutions...
La plus simple, la mettre dans un classeur dédié où tu mettras tes macros préférées (de préférence dans un module comme elle ne sera pas dédiée à 1 feuille). Le jour où tu en as besoin tu ouvres ce fichier et elle agira sur la sélection en cours de la feuille active du classeur actif.
Tu peux lui affecter un raccourci clavier si tu veux.

Si tu veux qu'elle soit toujours disponible dès l'ouverture d'excel :
- l'enregistrer dans le classeur de tes macros personnelles

ou
- mettre le fichier dans le répertoire xlstart

ou (sans doute le plus souple et le plus facile)
- l'enregistrer au format .xla (mais il faut absolument conserver une version .xls qcq part si tu veux la modifier ou en ajouter dans la même classeur).
Dans 'outils / macros complémentaires...' tu peux cocher/décocher selon si tu veux ou non qu'elle soit chargée au démarrage d'excel.

eric
0