2 macros excel - VB/VBA/VBS - Programmation
Marsh Posté le 16-11-2007 à 08:37:04
bonjour,
pour le premier pb je réfère passer par une colonne intermédiaire qui renvoie les valeurs de chaque jour
=SI(CelVal="";CelVal(L-1);CelVal)
De la sorte tu ne pointes jamais sur une cellule vide.
Pour le 2° pb
Au lieu de comparer colonne par colonne crée des variables qui concatènent les 2 colonnes
Str1 = CelCol1 & CelCol2
Str2 = CelColA & CelColB
Si Str1 = Str2 alors doublon...
A+
Marsh Posté le 16-11-2007 à 14:57:15
Hello,
merci pour les réponses.
Alors, avec ton idée, voilà ce que ça donne pour la 2:
Code :
|
Et ça marche nickel, je suis content!
Maintenant, je me dis que ça serait cool si je pouvais insérer un bouton ds le tableau, qui me permettrait, quand je clique dessus, de lancer la macro automatiquement.
Et ça je sais pas faire encore...
Par contre, je comprends pas trop ce que tu veux me dire pour la 1ère. Peut être que je n'ai pas été assez clair, alors je vais préciser.
En gros, à chaque fois qu'on lance la macro (en ayant précisé un champ de dates), Excel va chercher dans Bloomberg des valeurs qu'il stocke ensuite dans une worksheet; dans la worksheet principal, on lui demande de calculer des taux de rendements journaliers, hebdomadaires, mensuels, annuels...
Donc, si par exemple, dans bloomberg il n'y a pas le prix le 17/11/2007, il ressort "N/A history" ce qui empêche de calculer les rendements hebdomadaire entre le 17 et le 10 par exemple. Donc, je mets un "-1" dans la formule, pour qu'il calcule entre le 16 et le 9 par exemple.
Mais faire ça à la main une centaine de fois, c'est soulant...
En gros, comme il y a déjà les formules dans chaque case, je me dis qu'il faudrait juste rajouter un truc du genre IF Value= "N/A History" Then Do... avec la même formule que déjà inscrite avec un -1 en plus.
Dans ce genre, mais en bien écrit quoi...
Marsh Posté le 15-11-2007 à 23:08:14
salut tout le monde,
alors voilà, pour améliorer mon quotidien de stage, j'aimerais bien améliorer 2-3 fichiers excel.
1. Dans le premier, en fait, on récupère d'une autre appli des séries de données pour calculer des taux de rendements (cad qu'il fait (xt/xt-1)-1 avec xt-1 la valeur à la date t-1). Le problème, c'est qu'il arrive parfois que des données manquent (pour un jour donné), et donc ce qui empêche de calculer un taux de rendement et on obtient un joli "N/A" dans la case.
Dans ce cas, on rajoute (à la main) un "-1" à toutes les formules qui posent problème, pour lui dire d'aller chercher la valeur du jour d'avant (et donc, aussi la valeur en t-2). Le problème c'est qu'il faut faire ça pour chaque cas qui pose problème. Et pire, la fois d'après, il faut enlever les "-1" pour voir s'il trouve des valeurs.
Bref, c'est la merdouille.
Donc, ce que j'aimerais faire, c'est créer une formule, voire une macro, pour lui dire d'aller chercher la valeur de la date en question, et si le résultat du calcul donne "N/A", de prendre la date j-1; si ça donne encore rien, prendre j-2, puis j-3.
J'avais pensé à faire une macro VBA à base d'une boucle For i=0, 3...
mais vu comment le fichier est foutu, je me demande si ça ne serait pas plus facile de faire une formule que j'étirerai dans toutes les cellules concernées.
Des idées?
2. Pour le 2ème problème, j'aimerais faire une macro qui enlève les doublons; en gros, je lui demanderai de regarder une liste de nom (par colonne) et d'enlever tous les doublons, mais, en vérifiant quand même la case qui est à droite qui contient un numéro. Si le nom et le numéro correspondent, j'aimerais qu'il efface les doublons (voir plus parfois...)
Celle là, je ne vois pas trop comment l'implémenter...
Voilà, je vais réfléchir à tout ça demain, mais si quelqu'un à des pistes à me fournir, ça serait cool, parceque je ne suis pas un expert de VBA encore.
Merci