Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Copier/Coller sous multicritères

M.Ben

XLDnaute Junior
Bonjour la communauté XLD,

J'ai un soucis pour prioriser des actions dans ma macros, j'ai donc besoin de vos lumières.

Je m'explique, je développe une feuille Excel qui répertorie une liste d'équipements (Actionneurs, capteurs, autres) dans une première feuille.
Dans ma seconde feuille j'effectue un bilan de puissance qui reprend certains éléments de la première feuille.

Actions à réaliser:
- Identifier dans la feuille 1 les actionneurs, les capteurs etc,
- Compte le nombre de lignes pour chaque catégorie,
- Compare dans la seconde feuille si pour chaque éléments il y a suffisamment de lignes,
- En fonction de cela, ajoute ou supprime dans la feuille 2 des lignes
- Une fois que les lignes correspondes, copie certains éléments de la feuille 1 à la feuille 2 (N°PID, Nom composant ....)

Je monte mon programme petit à petit, et actuellement je bloque sur la création des lignes. J'arrive à créer des lignes pour la rubrique capteur et actionneur indépendamment l'une de l'autre. Par contre actuellement quand j'exécute ma macro pour la catégorie actionneur les lignes sont rajouter dans la catégorie capteur de la feuille 2.
Alors que si je mets en commentaire la partie qui traite les capteurs, les lignes qui traite les actionneurs sont rajoutées au bonne endroit (dans la catégorie actionneurs).

Je n'arrive pas à donner un ordre d'exécution (dire que d'abord tu traites les capteurs, puis quand tu as finis tu traites les actionneurs etc).

PS: pour le moment je traite la partie création de lignes, le copier/ Coller de données je le traiterai après.

J'ai joint le fichier type, et j'espère que mes explications sont compréhensible.

Pour la plus part de mes programmes, j'utilise la fonction apprentissage et je me sert de ce forum pour voir si des sujets similaire ont été traité.

Question fâcheuse: J'ai souvent vu dans les différents topics de ce forum et ailleurs que la fusion de cellules était à proscrire au maximum, cependant, dans ma feuille je souhaiterai fusionner certaine d'entre elles pour des question d'esthétique. est-ce qu'il existe une manière de dire en début de programme tu défusionnes les cellules fusionnées pour exécuter le programme et à la fin tu les fusionnes de nouveaux?

Encore merci et désolé pour le pavé
 

Pièces jointes

  • Gabarit bilan de puissance - A.xlsm
    335.8 KB · Affichages: 5
Solution
Je pense que le souci vient du calcul de Dep_Ligne_Actionneur qui est prématuré, car ensuite vous insérez des lignes, et donc cette valeur devient fausse.
J'ai réinitialisé cette valeur juste avant de s'en servir, pouvez vous tester, avec :
Code:
    Dep_Ligne_Actionneur = Application.Match("Actionneurs", [A:A], 0) 'Premier actionneur
    If Count_Name_2 < count_A Then
        ws_BP.Activate
        ....

sylvanu

XLDnaute Barbatruc
Supporter XLD
Si je comprends bien pour le timer, il suffit de mettre TO = Timer en début de macro et mettre le message box au niveau de là où nous souhaitons avoir le retour (exemple en fin de boucle ou en fin de programme), c'est bien ça ?
C'est ça. Mettre T0 là où vous voulez commencer à compter et msgbox pour mesurer.
Ou encore T0=Timer au début, T1=Timer là où on s'arrête et à la fin de la macro Msgbox T1-T0.
Autre question, je vois que dans vos lignes de code, il y a des couleurs je trouve ça pratique pour vite repérer l'information, comment faites-vous car les miennes sont toutes noir et bleu pour les fonctions VBA.
Dans le VBA vous faites Outils/Option et vous réglez les couleurs désirées:

Et la dernière, il y a pas une case à cocher dans les options pour avoir la proposition des variables créer un peu comme les propositions qui sont faites quand vous faites un .R, un menu contextuel apparait avec plusieurs propositions.
Aucune idée. En tous cas je ne connais pas.

NB :
A la fin de la sub rajoutez :
VB:
Sheets("BP").Columns("C:C").EntireColumn.AutoFit
Ce qui ajustera en automatique la largeur de la colonne C car j'ai vu que certaines chaines peuvent dépasser la largeur et c'est inesthétique.
 

Discussions similaires

Réponses
10
Affichages
314
Réponses
10
Affichages
614
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…