Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Une binouze sur la Cote d'Azur pour...

B

Babou

Guest
Bonjour tout le monde,
Une binouze pour vous si vous passez par la Cote d'Azur pour celle ou celui qui me sortira ce bamboou du pied )

J'ai une question pour vous, les pros du VB et autres VBAs )

Mon probleme est le suivant :

J'ai un fichier excel ou j'ai des donnees sous forme de tableaux pour des mois definis. Chaque mois, lorsque je fais la mise a jour des donnees, je dois figer les donnees du mois precedent de maniere a ce que les calculs ne se fassent que pour le mois courant, et non pas aussi pour le mois precedent.
Par exemple, en Novembre, je dois figer (copy-paste as values) les donnees du mois d'Octobre. Et cela pour chaque worksheet.
Je voulais savoir s'il y a un moyen de :

a partir d'une liste de worksheets donnee (soit construite manuellement, soit dynamiquement en recherchant les worksheets ou j'ai des dates sous la meme forme que celle donnee dans mon exemple) et en fonction d'une date que j'aurai renseignee quelque part (comme dans 'Dates entries' dans mon exemple) ou je mettrais 10/30/2002, de parcourir tous les ws de la liste ci-dessus et figer les valeurs de la ligne jusqu'à la derniere cellule non vide de la ligne en question.

Je precise que je n'ai pas forcement le meme nombre de colonnes dans chaque worksheet comme montre dans mon exemple !

La difficulte risque aussi de resider dans le fait que je peux avoir plusieurs tableaux dans une meme feuille. Si cela pose souci, je peux structurer un peu mieux mon fichier de maniere a n'avoir qu'un tabelau par feuille.

C’est dur a expliquer. C’est une tache que j’effectue actuellement manuellement et qui est tres fastidieuse car j’ai une cinquantaine de worksheets, avec au moins un tableau par ws (je peux en avoir plusieurs !).

Merci de votre aide.
Babou.
 
@

@+Thierry

Guest
Bonjour Babou

Il faut pas bégayer comme çà dans un Forum !

=> <http://www.excel-downloads.com/html/French/forum/messages/1_10934_10934.htm>

Si tu n'as pas eu de réponse là, ce n'est pas en te répétant ici que celà "activera" les choses... Mis à part le risque d'activer un énervement de ceux qui pourraient avoir l'envie de t'aider à résoudre ton problème.

Sur ce, comme bcp, je suppose que tu n'es pas habitué aux forums, donc c'est une faute que bcp de Newbies font. Mais imagine un peu que tout le monde fasse idem... Plus personne n'aurait de réponse!

Bon sur ce, on verra ce qu'on peut faire, mais pas maintenant pour moi, je file au bureau.

Pour la binouze, suis déjà sur la cote d'usure !

Bonne Journée
@+Thierry
 
B

Babou

Guest
Excusez moi... Je n'ai pas bien l'habitude des forums et je comprends que si tout le monde begayait... On se comprendrait difficilement )
Excusez moi encore...
Quant a la binouze, je laisse votre imagination courir ) Mais ca use ))
 
A

A_Binouze_Drinker_Among_Others

Guest
bonjour

la macro ci-dessous boucle sur les feuilles Graph ex1 & Graph ex2 puis sur chacune des cellules de leur première colonne contenant des constantes pour trouver les cellules contenant des dates, et le cas échéant vérifier que le mois de la date donnée est le 10ième mois (octobre).
Si le contrôle est positif les formules sont transformées en valeur pour toutes la ligne concernée, les formules sont définitivement perdues.

Sub test()
For Each sh In Sheets(Array("Graph ex1", "Graph ex2"))
'Debug.Print sh.Name
For Each cl In sh.Columns(1).SpecialCells(xlCellTypeConstants)
If IsDate(cl) Then
If Month(cl.Value) = 10 Then
Debug.Print sh.Name & " : " & cl.Address
sh.Rows(cl.Row).Formula = sh.Rows(cl.Row).Value
End If
End If
Next cl
Next sh
End Sub

bye
stephane
 
B

Babou

Guest
Bonjour A_Binouze_Drinker_Among_Others,
Super ! Ca marche bien...
Serait-il possible de construire la liste des worksheets de maniere dynamique ? A savoir, on regarde dans toutes les feuilles s'il y a un tableau avec des dates et si oui, on rentre dans la boucle, si non, on ne fait rien et on passe a la feuille suivante.
Un autre point : en testant, je pense que tu fais un "paste as values" sur toute la ligne. Or, je peux avoir d'autres formules sur la meme ligne, mais separees d'une cellule par rapport aux donnees de mon tableau (comme precise dans mon explication tout en haut de ce thread). Exemple : pour la ligne 1, mon tableau va jusqu'en A10, puis A11 est "blank", puis A12 et suivantes contiennent des formules que je ne veux pas toucher. En l'occurrence, il ne faudrait ne "paster as values" que les cellules jusque A10. Est-ce que cela est complique a implementer ?
Merci bcp pour ton up !
Ma propal tient toujours et est meme doublee )
Quant au reste, je ne discute pas ))
Binouzement votre,
Babou.
 
@

@+Thierry

Guest
Re Babou,

Vite fait, sans tester...

Pour la partie 1) Si tu vire l'array de STéphane, çà devrait boucler sur toutes les feuilles...
For Each sh In Sheets
For Each cl In sh.Columns...etc

Pour la partie 2) C'est exactement comme je t'avais prédis, avec les Rows pas de problème... mais sinon... Faut faire du casse tête... avec du "xlToRight" (une piste... encore heureux que tu as une colonne vide !!)

Mais là désolé je n'ai pas le temps de me pencher là dessus (dois finir une appli pour le boulot)

Bon Aprèm (et bonne bilouse)
@+Thierry_beers_drinker
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…