Macro Excel

Macro Excel - VB/VBA/VBS - Programmation

Marsh Posté le 09-07-2009 à 21:54:30    

Salut à tous !
 
Je ne comprends rien à rien aux macros et j'ai tenté de faire ce que je voulais mais je n'y arrive pas.
 
En fait le truc est simple : j'ai une colone avec des valeurs sur certaines lignes et rien sur d'autres par exemple :
 
A1 : 1
A2 : 2
A3 : 3
A4 : vide
A5 : 4
A6 : 5
A7 : vide
A8 : vide
 
Ce que je souhaite faire c'est que ma ligne A2 soit égale à ma ligne A1 plus un certain pas (10 par exemple).
Je sais très bien que c'est assez simple à faire mais j'ai une condition particuliere car je veux 'sauter' les lignes vides et faire en sorte qu'une case par exemple A6 soit égale à ma derniere case avec un résultat + mon pas :
 
A1 : 1
A2 : 11
A3 : 21
A4 : vide
A5 : 31
A6 : 41
A7 : vide
A8 : vide
 
Si c'est possible de ne pas utiliser de macro je serai le plus heureux !

Reply

Marsh Posté le 09-07-2009 à 21:54:30   

Reply

Marsh Posté le 10-07-2009 à 10:15:02    

il faut que tu passes par une colonne intermédiaire supplémentaire (ensuite, après un copiage/collage des valeurs, tu pourras supprimer ta colonne devenue inutile (vu que je suppose qu'elle ne l'est plus ?)
 
il faut dans ta colonne B, que tu lui indiques de prendre la valeur du dessus + 10, en conditionnant cette addition au fait que la cellule juste à gauche soit valorisée.
 
 
Je vois pas trop l'intérêt de la chose sinon... je vais faire mon chieur habituel, mais pourrais tu exprimer ton besoin précis, non sorti de son contexte...
Et pourquoi a-t-on ces lignes vides ?
Pourquoi les valeurs au début sont 1, 2, 3, 4, 5, quel est l'intérêt du coup si tu veux les transformer avec un certain "pas"... et pourquoi ensuite avoir des valeurs séparées d'un certain pas ?
Bref.... voilà pour vraiment répondre à ton besoin (et pas juste la question que tu poses), il faut tout exprimer.

Reply

Marsh Posté le 10-07-2009 à 16:08:26    

OK je vais tout expliquer en détail alors.  
En fait j'ai une premiere feuille contenant un tableau avec x lignes du genre :
 
A (Libelle)                          B(cout)
Installation chambre             20
cable                                 10
inter                                  5
bp                                     5
vide
vide
Installation chambre 2           50
luminaire                             30
cable                                 20
...
 
En gros sur cette feuille j'ai toute une liste de taches (ex: Installation chambre) avec le détail en dessous de chacune.
Pour préciser, il y a un pas de 10 lignes entre chaque installation pour pouvoir mettre les détails (dans cet exemple 5) avec certains champs qui restent vide si il n'y a pas de détail.
 
Sur ma feuille 2 (sur laquelle je veux implanter ma formule),seule feuille montrée à mon client, je veux avoir un récapitulatif automatique (sans avoir à faire de copier coller de la feuille 1).
Donc sur cette feuille, après avoir entré la première ligne, je veux faire en sorte qu'à une ligne x je récupère la dernière références vers ma feuille1 et je lui ajoute le pas (10 normalement, 5 pour l'exemple) et ensuite tirer la formule :
A                                    B
=feuille1!A1                      =feuille1!B1
vide(espacement obligatoire selon le souhait du client)
=feuille1!A(1+5(pas))         =feuille1!B(1+5(pas))
vide
=feuille1!A(1+5(pas)+5)         =feuille1!B(1+5(pas)+5)
......
 
Ce qui me donnera :  
Installation chambre            25
vide  
Installation chambre 2         50
....
 
Bien évidemment j'ai simplifier l'exemple car ma feuille 1 peut contenir plus de 1000 installations c'est pour cela que je n'ai pas envi sur ma feuille 2 d'avoir à entrer les références vers la feuille 1 du genre '=feuille1!A2' etc....
 
Voila j'ai tout expliqué si ya besoin de réexplication dit moi ce que j'explique mal :)

Reply

Marsh Posté le 10-07-2009 à 16:46:48    

Plusieurs trucs à voir...
 
Le plus simple, c'est que tu écrives tes 4 premières lignes (dont les 2 vides)
et ensuite, tu étires ta formule... ça va se faire tout seul du coup.
 
Si ton modèle est vraiment figé, ça ne va pas poser de souci (par contre, c'est pas ultra évolutif)
 
Une autre solution, consiste à ne pas avoir tes lignes vides... si tu veux vraiment un rendu avec des blancs entre chaque ligne, tu peux toujours augmenter la hauteur des lignes et faire un alignement vertical du texte en haut...

Reply

Marsh Posté le 12-07-2009 à 09:53:58    

Bonjour,
 
En A2:
 
=SI(1-MOD(LIGNE();2);SI(DECALER(Feuil1!$A$1;(LIGNE()-2)/2*6;0)<>0;DECALER(Feuil1!$A$1;(LIGNE()-2)/2*6;0);"" );"" )
 
En B2:
 
=SI(1-MOD(LIGNE();2);SI(DECALER(Feuil1!$A$1;(LIGNE()-2)/2*6;1)<>0;DECALER(Feuil1!$A$1;(LIGNE()-2)/2*6;1);"" );"" )
 
et tu "étires"
 
Le 6 étant le PAS dont tu parles, et qu'il serait plus agréable de trouver dans un cellule, quelque part.
 
Cordialement

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed