Transposer macro EXCEL4 en VBA Excel 2007
Bonjour,
Je suis novice dans le VBA mais j’avais créé des macros sous excel 4 en 1995 et j’aimerais les transposer en vba excel2007, comment faire ?
Je n’ai plus le fichier mais j’ai encore les écris en voici une partie.
Cahier des charges : Chaque différents produits contient une liste de références de composant électronique avec pour chaque référence un coefficient qui peut aller de 1 à 10)
Un produit = un classeur enregistré par son nom (produit1, produit2, produit3 etc)
1. demande le nom du produit à saisir
2. la quantité de ce produit (qté)
3. demande le numéro de commande‘(celle ligne est facultatif)
4. le classeur du produit demandé s’ouvre
5. copie le fichier et colle sur une nouvelle feuille nommée (« nomess »)
6. ajoute sur chaque cellule de chaque référence une formule (qté * coefficient) jusqu’à la dernière ligne 7. inscrit le numéro de commande
8. revient au nom du produit et recommence en collant à la suite
Quand on a fini de saisir tous nos produits on arrête la macro
Et on clique sur une nouvelle macro de tri, qui cette dernière va trier toute ces ligne par la colonne « référence », qui va ensuite insérer une ligne pour permettre de calculer le total de ces « références semblables»
Je vous remercie de votre aide
Geoffroy
Bonjour et bienvenue sur le forum
Il faut réécrire complètement la macro en langage VBA
Pour cela, il faudrait disposer d'au moins un fichier de ''Produit'' et savoir exactement ce à quoi il doit servir. C'est à dire avoir un exemple de document final tel qu'il est attendu.
Bye !
Bonjour,
Merci d'avoir répondu.
Voici un exemple de produit et du résultat que j'avais obtenu.
n'hésitez pas à me contacter
cordialement
Geoffroy
Apparemment, le fichier que tu m’as envoyé n’est pas un fichier ‘’Produit’’ puisque tu dis dans ton premier message :
Un produit = un classeur enregistré par son nom (produit1, produit2, produit3 etc)
Or, dans le fichier que tu m’envoies, il y a la liste de tous les produits.
S’il faut partir de cette liste pour obtenir le résultat présenté sur la feuille ‘’Nomes’’ , ok, c’est tout à fait faisable mais je ne vois pas où interviennent le nom du produit et sa qantité que tu entrais…
A te relire
bonjour,
désolé j'ai regroupé sur une seule feuille tous les produits demandés avec la qté
En fait au final c'était pour savoir la quantité total de chaque référence qu'il fallait commander (car références semblables dans certains produits).
Là, c'est ce que me donnait la macro, elle regroupait les produits les uns en dessous des autres et à la fin tri par référence et donne la somme total de chaque référence à commander.
le produit1 = le nom qu'on doit saisir, dans le produit1 on a plusieurs références (voir exemples fichier ci-joint)
j'avais mis un produit= un classeur car je n'arrivais pas à faire autrement, mais je pense qu'on peut faire une base de données avec tous ces produits et références dans une même feuille ?
la quantité que je rentrais c'était la quantité de produit à fabriquer, et chaque produit comportait une nomenclature avec différente références (naturellement cette quantité n'apparaissait pas dans la nomenclature du produit il y avait juste le coefficient
merci à toi
Un essai mais je ne suis pas sûr d'avoir bien compris ce que tu voulais car cela n'a plus grand chose à voir avec la traduction de ta macro Excel4.
Bye !
Bonsoir,
le produit c'est ok
mais la même chose sans la référence car elles sont déjà sur le produit
on saisie la qté du produit et apparait les références avec leurs qté (qté du produit multiplier par le coefficient de la référence)
je ne sais pas si je suis bien clair?
ensuite c'est la qu'on tri et additionne les références semblables
enfin merci pour ton aide
je vais essayer de me débrouiller avec ce que tu m'as donné un peu complexe pour moi
Bravo!
Bonjour,
j'ai tout annulé pour plus de clarté enfin j'espère
voir dernier message du 24 mars 2015
merci pour votre aide et pour le temps que vous passez à travailler pour nous
Geoffroy
Bonjour
GEOFF1958 a écrit :1. Peut-on créer une base de données ou un dico qui contiendrait tous ces produits?
On peut.
Je t’ai fait une macro déclenchée par le bouton ‘’Mise à jour de la base’’: regarde si elle te convient.
2. Comment éviter les erreurs de saisie,
En passant par des boites de dialogues et menus déroulants : je t’ai fait cela avec une macro qui se déclenche avec le bouton ‘’Choisir un produit’’
Le problème, pour moi, c’est que je ne sais pas ce qu’il faut faire avec le produit choisi…
3. Quand on supprime des lignes dans une feuille d’excel, ces lignes ne sont pas vraiment supprimées juste le contenu est effacé mais les lignes sont toujours là. Comment faire pour vraiment les supprimer?
Mais bien sûr que l’on peut supprimer des lignes, il suffit de sélectionner ces lignes puis de faire un clic droit et de choisir ‘’Supprimer’’. En macro, l’instruction pour supprimer les lignes 9 et 10, par exemple est :
Rows("9:10").Delete Shift:=xlUp4. Peut-on faire plus simple pour ma macro, car je me sers beaucoup de l'interpréteur?
On peut mais on peut aussi se servir de l’enregistreur puis éliminer tout ce qui est inutile et condenser certaines instructions, comme celles qui finissent par ‘’Select’’’ avec la suivante qui commence par « Sélection’’
Bye !
Bonjour,
RE ( macro réédité le 24 mars 2015)
Le but de cette macro c’est de regrouper les références identiques et de donner la quantité à commander
1 nomenclature ou 1 produit peut être comparé à 1 kit de montage
par exemple: nous voulons fabriquer 100 voiture X(= produits) ce qui implique à commander les pièces (=références) nécessaire à sa fabrication: 1*100 volants, 4*100 roues, 4 * 100 jantes, 1*100 moteurs etc
( ces chiffres en rouge représentent le coefficient de la pièces que vous verez dans les produits ou nomenclatures soit prod01,prod02,prod03 etc)
si nous fabriquons plusieurs voitures X, Y , Z certaines peuvent avoir les même roues par ex: voiture X et Y donc références identiques
ma macro regroupe ces références (ou pièces) identiques
Questions:
1. Peut-on créer une base de données ou un dico qui contiendrait tous ces produits?
2. Comment éviter les erreurs dans VBA? (genre on erreur goto)
3. Peut-on faire plus simple pour ma macro?
merci pour votre aide et pour le temps que vous passez à travailler pour nous
Geoffroy
Ce que tu fais n’est pas efficace si tu veux atteindre la dernière cellule.
Ecris ‘’titi’’ en E8 et ‘’toto’’ en E10
Fais ctrl fin puis supprime la ligne.
Enregistre ton fichier, sans le fermer.
Refais Crtl + Fin
Où va est la cellule active ? sur E10 ou sur sur E8 ?
En fait, cette commande permet d’aller sur la cellule qui a le plus grand des numéros de lignes et de colonnes utilisés depuis la création de la feuille ou le dernier enregistrement du fichier, que cette cellule soit vide ou pas.
Re
"Le problème, pour moi, c’est que je ne sais pas ce qu’il faut faire avec le produit choisi... "
Une nomenclature c'est l'ensemble de pièces utilisées pour la fabrication d'un produit.
Le produit est équivalent à un kit de montage où nous avons différentes pièces à assembler pour monter par exemple une radio , un téléphone, une voiture radio-commander etc.
si j'ai une voiture radio-commander à monter j'aurais plusieurs pièces ( carrosserie, roues, tableau de bord, rétroviseur, boite à vitesse, moteur etc , toutes ces pièces sont représentées par des références.
donc si on me demande de fabriquer 100 voitures Chevrolet Kalos radio-commander j'aurais 100 * par le coefficient de la pièces ou référence . exemple: les roues coefficient 4 donc = 100*4, la carrosserie coefficient 1=100*1, le volant 100 *1 , le rétroviseur intérieur 100*1, les jantes 100*4 etc)
on peut avoir 200 autres chevrolet avec les même roues que la kalos ci-dessus donc la référence sera la même mais la quantité de roues à commander sera supérieur 100*4 +200 *4 =300*4
en espérant d'avoir été un peu plus clair
si j'ai 20 lignes
et que je met cette commande:
Finligne = ActiveSheet.UsedRange.Rows.Count
puis je supprime les 10 dernières
ma "Finligne " ira à la 20
je n'arrive pas à la mettre à 10
je me complique peut-être?
merci encore trop sympa
Bonjour
GEOFF1958 a écrit :si j'ai 20 lignes et que je met cette commande: Finligne = ActiveSheet.UsedRange.Rows.Count puis je supprime les 10 dernièresma "Finligne " ira à la 20 je n'arrive pas à la mettre à 10
Pas compliqué. Dis-lui d’aller à la ligne : Finligne-10
Sub macro2()
finligne = ActiveSheet.UsedRange.Rows.Count 'définit la dernière ligne de ta plage utilisée
fincolonne = ActiveSheet.UsedRange.Columns.Count 'définit la dernière colonne de ta plage utilisée
Rows(finligne - 9 & ":" & finligne).Delete 'supprime les 10 dernières lignes
finligne = finligne - 10 'définit la dernière ligne de ta nouvelle plage utilisée
Range(Cells(1, 1), Cells(finligne, fincolonne)).Select 'vérifie en sélectionnant ta nouvelle plage utilisée
End SubOK ?
Bonjour,
merci
avec toi c'est tout simple et rapide
par contre je crois que j'ai doublé mes messages?
c'est super ce que vous faites car ça nous oblige à chercher et comprendre ce VBA que je trouve excellent
encore merci
à bientôt