Dupliquer ma formule VBA [Résolu]

Axis

XLDnaute Nouveau
Bonjour,

J'aurai besoin de votre aide pour m'aider a dupliquer ma VBA.
J'ai modifier une VBA trouve sur le net pour mes besoins et cela fonctionne bien.
par contre j'aimerai la dupliquer et sa aurai été trop simple mais le copier coller ne fonction pas car des fonctions doublé.
Désolé si je n’emploie pas les bon terme moi et la VBA sa fait 2.
Pour résumer ma VBA cherche les ligne dont la cellule a la valeur BC et me créer un nouvel onglet BC puis les colles dedant.j'aimerai faire la même chose avec RED et EVG. actuellement jai créer 3 bouton avec la meme formule ou j'ai juste changer BC en EVG et RED mais j'aimerai qu'ils soient en 1 seul bouton.
 

Pièces jointes

  • Classeur1.xlsm
    52.5 KB · Affichages: 67
  • Classeur1.xlsm
    52.5 KB · Affichages: 59
Dernière modification par un modérateur:

sousou

XLDnaute Barbatruc
Re : Dupliquer ma formule VBA

Bonjour

Remplace le contenu de ton module 3 par ceci et affecte à un bouton la macro cherche.
Ici je reprend la macro1 en lui mettant une variable, argument d'entrée 'valeur' , qui va remplacer partout ou il y avait "BC"
Dans la macro cherche, j'initialise une table avec les valeur à chercher, et pour chaque valeur de la table j'appelle la macro1


Sub Macro1(valeur)
Dim ong As Worksheet 'déclare la variable ong (ONGlet)
Dim pl As Range 'déclare la variable pl (PLage)
Dim dest As Range 'déclare la variable dest (DESTination)

'vérification de l'existance de l'onglet "BC"
For Each ong In Sheets 'boucle sur tous les onglets du classeur
If ong.Name = valeur Then GoTo suite 'si le nom de l'onglet est "BC" va à l'étiquette "suite"
Next ong 'prochain onglet de la boucle

Sheets.Add after:=Sheets(Sheets.Count) 'ajoute un nouvel onglet à la fin
ActiveSheet.Name = valeur 'nomme l'onglet "BC"
Sheets("Feuil1").Rows(1).Copy Sheets(valeur).Range("A1") 'récupère les en-tête de la première ligne
Sheets("Feuil1").Rows(2).Copy Sheets(valeur).Range("A2") 'récupère les en-tête de la première ligne

suite: 'étiquette
For Each ong In Sheets 'boucle 1 : sur tous les onglets du classeur
If ong.Name <> valeur Then 'condition 1 : si le nom de l'onglet est différent de "BC"
Set pl = ong.Range("N4:N" & ong.Range("N65536").End(xlUp).Row) 'définit la plage pl
For Each cel In pl 'boucle 2 : sur toutes les cellule cel de la plage pl
If cel.Value = valeur Then 'condition 2 : si la valeur de la cellule est "BC"
Set dest = Sheets(valeur).Range("A65536").End(xlUp).Offset(1, 0) 'définit la cellule de destination
cel.EntireRow.Copy dest 'copie la ligne entière de la cellule cel dans la cellule de destination dest
End If 'fin de la condition 2
Next cel 'prochaine cellule cel de la boucle 2
End If 'fin de la condition 1
Next ong 'prochain onglet de la boucle 1

End Sub

Sub cherche()
tableau = Array("BC", "EVG", "RED")
For n = 0 To UBound(tableau)
Call Macro1(tableau(n))
Next
End Sub
 
Dernière édition:

sousou

XLDnaute Barbatruc
Re : Dupliquer ma formule VBA

re
remplace cherche par ceci
Remarque générale: ton code est peu claire et le goto suite sont à proscrire

Sub cherche()
tableau = Array("BC", "EVG", "RED")
For n = 0 To UBound(tableau)
Call Macro1(tableau(n))
With Sheets(tableau(n))
.UsedRange.Sort key1:=.Columns(5), key2:=.Columns(6)
End With
Next

End Sub
 

Axis

XLDnaute Nouveau
Re : Dupliquer ma formule VBA

Avec ta formule le problème est qu'il me fait en même temps les 2 première lignes qui sert de titre au colonne.
Du coup elle se retrouve a la fin du tableau.
J'ai un 2ème problème c'est les image qui s’importe pas a la même taille, j'ai des fois des petites et des fois des bonnes.
on vois bien la différence entre BC et RED.
 

Pièces jointes

  • Test.xls
    140.5 KB · Affichages: 47
  • Test.xls
    140.5 KB · Affichages: 63

sousou

XLDnaute Barbatruc
Re : Dupliquer ma formule VBA

Re

La macro 1 ne me plaisais pas beaucoup, je l'ai remplacé par la macro2
j'ajoute les tires après le tri

Pour test images je ne vois pas bien ce qui te gènes
 

Pièces jointes

  • testaxis.xls
    149 KB · Affichages: 56

Axis

XLDnaute Nouveau
Re : Dupliquer ma formule VBA

Re,

Désolé de la réponse tardive.
Pour les images de mon cotes ils avaient pas la même tailles d'un onglet a l'autre, mais j'ai réussi à résoudre ce problème.

J'aurai encor 2 à 3 question par rapport a ce fichier:

-> j'aimerai que l’orque j’appuie sur Trie machine, il me remette les ligne à une hauteur de 12.75.
(je les agrandie juste pour pouvoir importer les images)

-> Est-il possible une fois les onglets trié de faire une recherche doublon et que si il en trouve il m'additionne le "Nbr total" avant de supprimer la ligne ? ( sachant qu'il peux y avoir plusieurs ligne en doublon)

La macro 1 est une trouvé sur internet, je la trouvais pratique pour moi car étant débutant il expliquait chaque ligne de commande. Par contre sur la tienne que tu as compressé sa ma retirer le faite de pouvoir garder les onglet dans le fichier. Il faut obligatoirement les supprimer pour qu'il me les créer.
 

sousou

XLDnaute Barbatruc
Re : Dupliquer ma formule VBA

Bonjour

Voilà pour que tu n'es plus à supprimer les feuilles, pour la hauteur des lignes
Pour les doublons peux-tu préciser doublons de quelle colonne, et quels nombres à additionner.

Pour les explications du code je vais annoter.
 

Pièces jointes

  • Copie de testaxis.xls
    208.5 KB · Affichages: 50
  • Copie de testaxis.xls
    208.5 KB · Affichages: 54

Axis

XLDnaute Nouveau
Re : Dupliquer ma formule VBA

J'ai du mal m'exprimer, je voudrais que les ligne de l'onglet "Nomenclature" retourne à 12.75 et que ceux créer "EVG ..." reste a la hauteur de 52.50.
Et pour les doublon après réflexion il serait plus judicieux de le créer a partir d'un nouveau bouton car si on supprime les doublon et additionnons la colonne "Nbr Total" (colonne4), je ne serais pas lequel était en doublon et le résultat de la colonne 2 et 3 seront fausser par l'addition de la colonne 4 .
ex: Nbr Nbr élé Nbr total
Ligne 1 1 2 2
Ligne 2 5 1 5
-----------------------------
Ligne final sup. doublon 1 2 7

Ce résultat serait faux car 1 x 2 fais 1 et non 7. Quand j'ai des doublons il faudrait que les cellules des colonnes 2 et 3 soit supprimé.

Je sais pas si j'ai été plus clair dans mes explication.
 

sousou

XLDnaute Barbatruc
Re : Dupliquer ma formule VBA

Re
Toujours pas compris pour les doublons
Sur quelle feuille?
doublon sur quelles colonnes?
Ont additionne quoi
Essaie de me montrer sur le fichier ce que tu veux obtenir
 

Pièces jointes

  • Copie de testaxis.xls
    206 KB · Affichages: 60
  • Copie de testaxis.xls
    206 KB · Affichages: 53

Axis

XLDnaute Nouveau
Re : Dupliquer ma formule VBA

Les doublons peuvent apparaitre dans chaque onglet. par moment je peux avoir 2 barre en RED de meme longueur et dia. tout comme en EVG avoir 2 cadres identiques.
Ci-joint j'ai mis un exemple de ce que j'aimerai obtenir. dans la mesure du possible.
 

Pièces jointes

  • Classeur1.xlsm
    78 KB · Affichages: 66
  • Classeur1.xlsm
    78 KB · Affichages: 66

sousou

XLDnaute Barbatruc
Re : Dupliquer ma formule VBA

Je crois que j'ai compris.
Mais encore une chose dans les fichiers précédents la feuille de nomenclatures ne contient pas les lignes que tu donnes en exemples( pas de num rep 007 et 008)
d'autres part dans les colonnes i (dimensions) il ya souvent de multiple dimensions quel traitement?

Peux-tu fournir le fichier avec la bonne nomenclature pour que les tests correspondent à ton exemple
 
Dernière édition:

Axis

XLDnaute Nouveau
Re : Dupliquer ma formule VBA

Ah oui désolé, je viens de m'apercevoir quand faisant les tests de mon coté j'ai supprimé le fichier envoyer au départ.
Je vais essayer de pas supprimer celui la et on va partir de celui-ci. c'est le dernier envoyer sauf que j'ai mise a jour mes formule actuel. tant qu'on n'arrive pas a obtenir le résultat sur mon fichier de base j'ai garder le mode manuel ou j'ai beaucoup de bouton a cliquer.
Le repère 008 et 009 je les rajouter manuellement pour faire l'exemple.
Normalement les repère sont importé depuis un autre logiciel d’où le faite que je ne peux pas choisir l'apparence de départ et doit avec la VBA la transformer à mes besoins.
 

Pièces jointes

  • Classeur1.xlsm
    103 KB · Affichages: 59
  • Classeur1.xlsm
    103 KB · Affichages: 68

Axis

XLDnaute Nouveau
Re : Dupliquer ma formule VBA

Ah j'ai oublié de le mettre désolé.
Comme dit précédemment pour le moment je l'utilise en test et non sur mon fichier vu qu'il n'est pas fini. je viens de le mettre dans le module 2 comme il était au début. On va partir sur ce fichier sans le changer.
 

Pièces jointes

  • Classeur1.xlsm
    100 KB · Affichages: 61
  • Classeur1.xlsm
    100 KB · Affichages: 67

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa