VBA : Comparer cellules + couper/coller lignes
Bonjour,
J'espère que certains pourront venir à mon aide, je suis débutant en VBA (je pars de zéro mais avec des bases en C et fortran) et je dois absolument réaliser une maccro VBA.
Voila j'explique mon problème un peu plus en détails.
J'ai deux fichiers excel : "A_valider_calculs" et "Priorites".
Le fichier "A_valider_calculs" contient une feuille "Clos" et le fichier "Priorites" contient 3 feuilles : "Bidos", "Non_Bidos" et "Clos_Priorites".
Le but de la maccro VBA est de comparer la colonne A de "A_valider_calculs/Clos" avec respectivement "Priorites/Bidos" et "Priorites/Non_Bidos".
Si le contenu des cellules est le meme pour une ligne, il faut que je colorie en vert la ligne correspondante dans "Priorites/Bidos" ou "Priorites/Non_Bidos" et que je coupe cette même ligne pour la coller dans "Priorites/Clos_Priorites", sachant que ce fichier contient déjà des lignes à la base.
Petite chose en plus, Il faudrait également que cette maccro s'effectue à l'aide d'un "bouton" mise à jour qui se situerait dans la première cellule de "Priorites/Bidos" et qui afficherait la dernière date à laquelle on a cliqué dessus.
Je remercie tous ceux qui auront le temps de lire mon problème et qui m'apporteront de l'aide sachant que je galère dessus depuis pas mal de jour.
Bonne journée
Définir le problème en terme de constantes Excel VBA
Bonjour,
Il va falloir décrire chaque .xls par des constantes telles que le nom du Workbook (.xls).
Le nom de la constante de chaque Workbook doit refléter s'il s'agit d'un fichier source ou cible c-a-d résultat.
Pour chaque feuille, décrire les zones utiles en terme de rangées et colonnes.
Cela a été clairement indiqué dans l'algorithme en langage naturel.
Traduisez le en constantes Excel VBA dans un module Module1 inséré dans une feuille Excel vide dont vous choisirez le nom du .xls tel que Priority.xls
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| Option Explicit
Public Const nameWrkSourceValider = "A_Valider_Calculs.xls"
Public Const indShtSourceClos = 1 ' Première feuille "Clos" de A_Valider_Calculs.xls
Public Const rowClosCalcul = 1 ' à adapter si le premier calcul n'est pas en 1ere rangée.
Public Const colClosCalcul = 1 ' à adapter si le premier calcul n'est pas en 1ere colonne.
Public Const nameWrkTargetPriorite = "Priorites.xls"
Public Const indShtTargetBidos = 1 ' feuille "Bidos"
Public Const rowData = 1 ' à adapter si la première data n'est pas en 1ere rangée.
Public Const colData = 1 ' à adapter si la première data n'est pas en 1ere colonne.
Public Const indShtTargetNonBidos = indShtTargetBidos + 1 ' feuille "Non_Bidos"
'... |
Il faut choisir des noms significatifs pas trop courts ni trop longs en vous aidant des libellés des rangées et colonnes.
- Au niveau des Workbook, on n'a pas le choix il faut les identifier par leurs noms.
- Pour les feuilles à l'intérieur d'un .xls, si vous pouvez garantir leurs ordres tel que "Bidos" sera toujours avant "Non_Bidos" alors utiliser des indices numériques comme indShtTargetBidos et indShtTargetNonBidos sinon passez à des noms comme nameShtTargetBidos et nameShtTargetNonBidos.
Si la structure des feuilles Bidos et Non_Bidos est identique, vous pouvez factoriser les constantes qui les décrivent en utilisant des noms judicieux communs aux deux feuilles.
A la lecture des noms des constantes et surtout de leurs commentaires, on doit pouvoir immédiatement comprendre où sont les sources de données, où est la cible résultat, où trouver chaque donnée, où afficher le résultat (colorier en vert, couper puis coller, datation, etc.)
Ce travail descriptif par des constantes est indispensable avant d'aborder le détail de chaque action à réaliser.