Mon entreprise utilise Excel pour effectuer le suivi des inspections et de la maintenance des extincteurs portables. J'essaie d'y ajouter des fonctionnalités, mais je n'ai pas la moindre idée de la façon de le faire. Je ferai de mon mieux pour expliquer en quoi j'ai besoin d'aide:
Les trois feuilles auront les mêmes en-têtes de colonne dans la rangée 1. Sur les première et deuxième feuilles du cahier (intitulées «Mensuel» et «Annuel», respectivement), j’utilise la mise en forme conditionnelle pour colorer les cellules des colonnes Y et AC en fonction de ces informations. les valeurs déterminées par une formule (Jaune si le calcul renvoie une valeur inférieure à 90, Rouge si la valeur renvoyée est 0 ou un nombre négatif).
Ce que je voudrais qu'une macro fasse, c'est de copier toute la ligne de la colonne A à la colonne AD dans une troisième feuille (intitulée "Maint Due"). Il serait également utile que ce processus soit automatisé de manière à ce que, chaque fois que les valeurs des colonnes Y et AC soient modifiées dans les feuilles "Mensuelle" ou "Annuelle", les informations de la feuille "Maintien dû" soient automatiquement mises à jour (mais si je dois réexécutez la macro manuellement pour que cela se produise, ce n'est pas grave).
J'espère avoir expliqué ce que j'essaie de faire d'une manière qui a du sens pour quelqu'un et qui peut offrir de l'aide. J'ai très peu d'expérience en codage et cela fait 15 ans que je n'ai pas vraiment codé, alors je suis très rouillé. J'apprécie tout conseil ou assistance que les gens peuvent donner.!
MODIFIER:
Je n'ai jamais utilisé l'enregistreur de macros et je ne peux que comprendre comment créer une macro à copier-coller. Je n'y ai donc pas eu de chance. Après avoir fait quelques recherches supplémentaires et visionné des vidéos, je l'ai bricolé:
Sub Show_on_Maint()
x = 2
'Sets the starting row
Do While Cells(x, 2) <> ""
'Continue to evaluate until a blank cell is reached
If Cells(x, 25) <= 90 Then
'Evaluates the cell in column Y to determine if the value is less than or equal to 90
Sheets("Sheet1").Rows(x).Copy Sheets("Sheet6").Range("A2")
'Copies the row to the Maint Due sheet
Else
If Cells(x, 29) <= 90 Then
'Evaluates the cell in column AC to determine if the value is less than or equal to 90
Sheets("Sheet1").Rows(x).Copy Sheets("Sheet6").Range("A2")
'Copies the row to the Maint Due sheet
End If
End If
x = x + 1
Loop
End Sub
Lorsque je lance / débogue, je reçois une boucle sans erreur Do. Je pense que ma logique est bonne mais je n'ai pas assez d'expérience pour comprendre pourquoi cette erreur se produit.
EDIT: Fin manquante si avant x = x + 1
Maintenant, je reçois une erreur d'exécution 9 "Indice en dehors de la plage" à: Sheets("Sheet1").Rows(x).Copy Sheets("Sheet6").Range("A2")
la source
Réponses:
Vous avez mentionné que vous aimeriez que cela automatiquement copier l'information sur le Maintien dû , donc je vais travailler avec ça. UNE
Worksheet
changer de macro d’événement pourrait couvrir l’automatisation, mais vous en auriez besoin pour chacun des Mensuel et Annuel feuilles de travail. Je vais suggérer unWorkbook_SheetChange
qui analyse la feuille de calcul source à la recherche de Mensuelle ou Annuelle.Robinet Alt + F11 et lorsque le VBE s'ouvre, regardez le Explorateur de projet à gauche pour ThisWorkbook . Si vous n'avez pas le Explorateur de projet ouvrir le robinet Ctrl + R pour le montrer. Clic-droit ThisWorkbook et choisir
View Code
. Dans le nouveau volet à droite intitulé quelque chose comme Book1 - ThisWorkbook (Code) coller ce qui suit.Robinet Alt + Q pour revenir à votre classeur. Toute nouvelle valeur saisie dans la colonne Y ou AC de la feuille de calcul annuelle ou mensuelle entraîne la copie de cette ligne dans la ligne vierge suivante de la feuille de calcul Gérer les échéances.
Le premier problème que je vois est que les macros d'événements déclenchés ne se déclenchent pas lorsque le résultat d'une formule est modifié. Il a été fait mention des colonnes Y et AC en cours de calcul, il se peut donc que le déclencheur se trouve sur la colonne créant la ou les valeurs dans les colonnes Y et AC, et non les colonnes Y et Ac elles-mêmes. Les colonnes V et X semblent être des candidats probables.
la source