Reactualisation de macros

Probleme-VBA_2012-10-VIERGE.xls Bonjour a tous, je suis un "vieux" du tableur mais autant, il y a quelques années j'étais actif sur Excel, pour lequel, j'ai participé au développement sur 5 ans d'une feuille de travail, outil qui nous a donné toute satisfaction. Au changement de format Excel, les macros développées a la première heure "Copier: Ctrl k", page supplémentaire "Pagesupp: Ctrl e" ont perdu leur fonction et on a bricolé sans résoudre le problème.

J'essaie depuis plusieurs jours de redévelopper cet outil (revirement de la direction et grosse mémoire d'un ancien utilisateur (et nostalgique) de cette feuille), mais la problème je suis revenu à l'état zéro, autant je me débrouille pour les formules et méthode, autant le VBA, c'est pas rentré du tout, d'où mon appel au secours.

Les vielles macro: pouvez vous me communiquer la méthode, pour l'équivalent en "nouvelle génération" :

Copier / coller une sélection de lignes qui se suivent : 1er je vais dans la feuille MINUTE DEF10, je renomme en colonne "B" je sélectionne la ligne qui va accueillir la première ligne en copie, 2em je vais dans un feuille contenant les données ciblées (en réel plus de 10 thèmes x 200 à 300 articles ou assemblages), sélection de la ou les lignes concernées, 3em avec le raccourcis Ctrl + k, la saisie est effectuée et ramenée dans la feuille MINUTE DEF 10. En aucun cas ce collage ne doit être effectue sur la / les dernières lignes, ca écrase et bloque la feuille, en cas de calcul sur plusieurs feuilles, la saisie de "ST" dans la dernière ligne de calcul et première ligne de la colonne B provoque un sous total et report sur autant de feuille qu'il faut.

La macro originale: Enregistrement1 (k) =COPIER() =ACTIVER.CLASSEUR("MINUTE DEF10";FAUX) =SELECTIONNER() =COLLAGE.SPECIAL(1;1;FAUX;FAUX) =RETOUR()

La macro Page supplémentaire : 1er Sur la dernière ligne de la feuille MINUTE DEF10,et pour lui rajouter une suivante, saisie de cette ligne, 2em Macro PageSup, cette macro sélectionne une feuille MINUTE POUR COPIE PAGE, Saisie un bloc complet "page" et le colle à la suite du document MINUTE DEF10 en incrémentant les reports vers le haut de la page pour les différents ratios et assurer les retours vers la feuille d'analyse. Cette action est reproduis blé à la demande pour pouvoir finaliser l'étude en cours

MACRO PAGESUPP =PROTEGER.DOCUMENT(FAUX;FAUX;FAUX) =ACTIVER.CLASSEUR("MINUTE POUR COPIE PAGE";FAUX) =SELECTIONNER("L30";"L30C2") '=LIGNEV(21) =SELECTIONNER("L30:L58","L30C2") '=COPIER() =ACTIVER.CLASSEUR("MINUTE DEF10";FAUX) =SELECTIONNER() =COLLER() =RETOUR()

Le plus perturbant pour moi et la ou je bute, c'est que ce sont des copies variables quand a la source, variable quand a la saisie et encore variable à la destination et la je mer.. lamentablement.

Merci par avance pour votre aide. Moultigrade

Bonjour

Je me souviens de ce temps où les macros excel s’écrivaient avec des « = » en début de chaque instruction et sur des feuilles de calcul.

Aussi je veux bien essayer de t’aider mais je sens que cela ne va pas être commode….

Il serait peut-être plus simple que tu nous dises ce que tu veux faire exactement en partant d’un exemple concret : feuille de départ et feuille d’arrivée telle que tu la souhaites et en expliquant bien où on prend les données et ce qu’on doit en faire.

A te lire

Bonjour, désolé des temps mort, en ce moment ça se bouscule.

Le but : automatiser un copier coller d'une sélection de lignes qui se suivent

1er je vais dans la feuille MINUTE DEF10,

2ème je sélectionne la ligne qui va accueillir la ligne ou va s'effectuer la copie,

3em je vais dans un feuille contenant les données ciblées (onglet plancher ou autre, en réel plus de 10 thèmes d'ongles et 200 à 300 articles ou assemblages),

4ème sélection de la ou les lignes concernées,

5em ( avec un raccourcis? ), ramener la saisie est effectuée dans la feuille MINUTE DEF 10 au niveau précédemment sélectionne.

Après je travaille les quantités et prix mais l'avantage est de se créer des thèmes et si c'est bien fait, de n'avoir plus que des quantités à saisir.

Le collage ne doit être effectue sur la / les dernières lignes (c'est un inconvénient de cette "ancienne" feuille), ca écrase et bloque la feuille.

en cas de calcul en continuité sur plusieurs feuilles, la saisie de "ST" dans la dernière ligne de calcul et aussi de la première ligne de la colonne B provoque une continuité d'opération (chose qui avec les possibilités actuelle des feuilles /impression, ne devrait pas exister).

Voilà, j'espère avoir été clair, dites moi.

Cordialement, Moultirade

Bonjour

Ci-joint un essai sur le travail demandé.

Tu pourras comparer avec les anciennes macros. Je t’ai mis quelques explications qui sont écrites en vert : cela n’a aucune incidence sur la macro qui ignore tout ce qui est en vert.

Pour un clin d’œil au passé, je t’ai mis un « Ctrl » + « d » pour lancer le copier-coller.

Ensuite, tu suis les instructions car on ne peut plus intervenir sur la feuille de calcul quand la macro a démarré, si ce n’est pour l’arrêter. Et encore, elle tellement vite qu’elle a fini avant que tu n’aies pu faire quoi que ce soit.

Tu peux regarder en revanche ce qu’elle fait. Pour cela, va dans le menu :

• Outil

• Macro

• Cliquer sur la macro : « CollerDesDonnées »

• Cliquer sur « Pas à pas détaillé »

Une première fenêtre s’ouvre, c’est le module où se trouve la macro qui appelle l’ouverture de la boite de dialogue (UserForm).

Clique sur F8 pour exécuter les instructions une après l’autre et pour recommencer.

Une deuxième fenêtre apparait qui affiche les macros attachées à la boite de dialogue.

Dans cette fenêtre, la première macro, « Private Sub userform_initialize()», va remplir les contrôles qu’elle va te présenter par défaut mais que tu pourras modifier.

Elle te rend alors la main pour que justement tu puisses modifier ou compléter ce qu’elle te propose. Tu peux alors tout arrêter en cliquant sur Annuler ou continuer en cliquant sur OK.

Une deuxième macro s’exécute alors « Private Sub Cmd_OK_Click() », qui va véritablement commencer le travail demander.

A tout moment, tu peux repasser en automatique en cliquant sur F5 et la macro s’exécute jusqu’à la fin, ou arrêter son exécution en cliquant sur le bouton « Réinitialiser » dans la barre des outils.

Voilà, tu pourras comparer les instructions avec celles de Excel 4 du début des années 90…

Je reste à ta disposition si tu as encore besoin.

Bon courage !

Bye !

Merci GMB pour votre participation, j'ai vraiment pris quelques années lumières de retard. . . .

Par contre a l'essai, ça bloque et le débuggeur me cite le "UserForm1" avec blocage sur la 13em ligne (sans afficher la page réceptrice), et la commande, apparemment ne prend que la 1ere ligne demandée en copie.

Comme il s'agit de "rapatrier" des sous blocs préparés pour faciliter une saisie, les sous blocs sont d'un nombre de ligne variable de 1 à x (avec dans la feuille actuelle, la contrainte de gérer le nombre de ligne du fait des sauts de pages qui devraient être supprimés)

En second test, j'ai essayé en ligne par ligne, résultat et blocage idem.

Je vais essayer de "comprendre" mais compte encore sur votre guidage.

Je ne sais si vous avez reçu mon précédent mail, je me répète, bonne année et tous vœux pour vous et vos proches.

Moultigrade

Question annexe : comment fait-on pour apprendre a lire et écrire le VBA, que me conseilleriez vous pour réactiver mes vieux neurones, j'aime bien demander de l'aide mais j'aime aussi comprendre et pouvoir aider mon entourage, merci.

Bonjour

Essaie avec cette nouvelle version, cela devrait mieux marcher.

Quant à ta question :

comment fait-on pour apprendre a lire et écrire le VBA

Je ne saurai trop te conseiller le tutoriel de ce forum, il est très bien fait !

Et en cas de difficulté, il ne manquera pas de volontaires sur ce forum pour te venir en aide.

Bye !

Rechercher des sujets similaires à "reactualisation macros"