Macro avec données variables
Bonjour.
J'ai une galère avec une macro que je n'arrive pas à réaliser.
Pour poser le problème :
J'ai besoin d'aller rechercher des informations qui se trouvent dans mon dernier onglet, à chaque fois. C'est à dire que dès que je crée un nouvel onglet, qui n'a donc pas le même nom que le précédent, la macro fonctionne pour lui aussi.
J'ai réussi à faire une macro pour aller chercher des informations dans un onglet, en utilisant le nom de l'onglet, mais cela ne convient pas exactement à ce que je veux faire, et je n'arrive pas à intégrer ce qu'il faut pour que la macro aille chercher à chaque fois dans le dernier onglet, peu importe son nom.
Voici ce que j'ai actuellement :
Range("B3").Select
ActiveCell.FormulaR1C1 = "blabla"
Range("C4").Select
ActiveCell.FormulaR1C1 = "blabla"
Range("C5").Select
ActiveCell.FormulaR1C1 = "blabla"
Range("D3").Select
ActiveCell.FormulaR1C1 = "='Feuille1'!R[30]C[5]"
Range("E4").Select
ActiveCell.FormulaR1C1 = "='Feuille1'!R[27]C[4]"
Range("E5").Select
ActiveCell.FormulaR1C1 = "='Feuille1'!R[23]C[4]+'1'!R[25]C[4]"Je me doute fortement que je dois modifier le feuille1'!, mais je n'ai pas trouvé par quoi je devais le remplacer.
Tant que j'y suis, j'aimerai savoir s'il serait possible que le classeur se bloque, empêche l'ouverture d'un onglet supplémentaire tant que la macro dont je parle ci-dessus n'a pas été exécutée. C'est à dire que tant que la macro n'a pas été utilisée, exécutée, il me soit impossible d'entrer des données dans un onglet supplémentaire (qui n'existe pas encore, mais que je créerai moi-même).
J'espère avoir été clair, n'hésitez pas à me le dire si ce n'est pas le cas.
Merci d'avance pour votre aide.
Cordialement,
Leftino.
Bonjour
A tester
Range("B3") = "blabla"
Range("C4") = "blabla"
Range("C5") = "blabla"
Range("D3").FormulaR1C1 = "='" & Sheets(Sheets.Count).Name & "'!R[30]C[5]"
Range("E4").FormulaR1C1 = "='" & Sheets(Sheets.Count).Name & "'!R[27]C[4]"
Range("E5").FormulaR1C1 = "='" & Sheets(Sheets.Count).Name & "'!R[23]C[4]+'1'!R[25]C[4]"Pour ta 2ème question sans connaitre comment fonctionne ton classeur, je n'arrive pas trop à comprendre ce que tu veux faire
Joins ton fichier, dans lequel tu détailles les opérations à faire avant d'insérer une feuille
Bonjour, merci de ton aide !
La macro que tu as proposée fonctionne, mais partiellement.
J'entends par là qu'elle fonctionne avec ma dernière feuille, mais cela semble bloquer si j'en rajoute une par la suite. Cela a l'air de venir du début de ma macro, mais je ne trouve pas pourquoi.
Je te joins mon fichier, pour que tu puisses voir, et t'explique un peu le fonctionnement global de mon fichier :
Le but du jeu est de créer une sorte de micro logiciel comptable.
Mes 6 premiers onglets sont fixes, et ne seront pas modifiés : ce sont soit des modèles, soit des données de base. Le but est, à partir du premier onglet (ou du deuxième en cas d'avoir), d'ouvrir un nouvel onglet avec une facture vierge, que je remplirai ensuite à la main (client, livraison, articles, etc). Ce nouvel onglet s'appellera "1" pour la première facture, "2" pour la deuxième, et ainsi de suite.
Cette partie-ci fonctionne bien, je n'ai pas de problème dessus.
C'est après que ça bloque. Je souhaite, pour faire simple, que les informations de mes factures sont retranscrites dans mon onglet "comptabilité", via la macro "test_macro_compta". Le TTC va dans un compte, le HT dans un autre, et la TVA dans un autre.
J'ai édité une facture "1", qui fonctionne lorsque tu exécutes la macro, pour que tu puisses voir.
Le problème vient... maintenant. Ma macro fonctionne pour ma facture "1", mais ne fonctionne plus si j'essaye de l'appliquer à d'autres nouvelles factures que j'ajoute ensuite. Il semblerait que le début de ma macro déconne, mais je ne sais pas pourquoi. Je souhaite, en gros, que lorsque j'appliquerai ma macro à ma deuxième facture, il se crée dans l'onglet "Comptabilité" un tableau identique au premier, en dessous, qui reprenne les mêmes informations (HT, TTC, TVA), sur la même logique, et ce pour un nombre de factures pouvant aller jusqu'à l'infini.
Ma deuxième question était toute simple en fait, mais tu comprendras peut-être mieux maintenant que tu as le fichier et son fonctionnement sous les yeux : j'aimerai bloquer la création d'une nouvelle facture (et donc sa comptabilisation) tant que l'actuelle n'a pas été comptabilisée. En effet, vu que ma macro utilise les données de mon dernier onglet, si je comptabilise un onglet 4 par exemple, sans avoir comptabilisé les précédents, je ne pourrai pas revenir dessus grâce à ma macro.
Mais ce point-ci est optionnel, c'est clairement le premier point qui est important, celui-ci n'est qu'un détail.
Merci de ton aide.
Re,
Je viens de regarder, ça a l'air d'être parfaitement ce qu'il me fallait !
Je vais regarder un peu la macro que tu as faite pour essayer de la comprendre, je pourrai me coucher moins bête si j'y arrive
Une petite dernière : je n'ai qu'à changer le nom des sources dans la macro pour obtenir la même logique, avec les avoirs ?
Merci beaucoup de ton aide !
Bonjour
Leftino a écrit :je n'ai qu'à changer le nom des sources dans la macro pour obtenir la même logique, avec les avoirs ?
En faisant une 2ème macro presque identique cela peut se faire
reviens si besoin
Bonsoir !
J'ai réussi à créer la nouvelle macro pour les avoir en me basant sur la tienne, ça m'a permis d'avancer, et surtout de comprendre la logique de la tienne.
Dans tous les cas, je tiens à te remercier, tu m’ôtes une belle épine du pied ! Merci de ton aide
Merci pour l'aide, et bonne continuation