Macro dans Excel
Je vais essayer de vous expliquer le plus clairement possible mon problème. J'ai un fichier excel avec plusieurs données, en fait se sont les caractéristiques d'instruments de mesures. Donc pour un instrument je vais avoir plusieurs lignes. Je voudrais faire une macro ou autre chose pour que lorsque je sélectionne la référence d'un instrument j'ai uniquement toutes les interventions effectuées sur cet instrument.
En gros , pour schématiser:
Instrum A: réparation
Instrum A: envoi
Instrum A: réception
Instrum B: réception
Instrum B; réparation
Instrum C:retour
Instrum C réparation
Et sur une feuille il faut lorsqu'on affiche Instrum A qu'il mette toute les donées propres à l'instrum A.
Merci pour votre aide!!
Configuration: Windows 2003 Internet Explorer 6.0
23 réponses
Le fil traite d'Excel et d'une demande de macro ou d'une solution autonome permettant de filtrer les données pour afficher uniquement les interventions d'un instrument à partir de sa référence. Plusieurs participants suggèrent des approches variées, allant d'une macro VBA qui regroupe les lignes par instrument à des méthodes utilisant des tableaux et des tris automatiques sur une feuille dédiée. Des précisions techniques soulignent des détails pratiques comme la gestion des espaces dans les noms d'onglet et l'utilisation de tableaux pour accélérer la restitution. En complément, certains échanges évoquent le partage d'extraits de fichiers et l'intérêt d'une solution évolutive capable de s'adapter à une croissance annuelle du nombre d'appareils et de données.
-
Bonjour,
Je suis stagiaire dans une entreprise et je dois bosser sur ce sujet : c'est une urgence de dernière minute pour une certification, on doit se mettre à la norme et en gros, ca doit être fait pour avant hier.
On souhaite gérer nos appareils sur ACCESS à la place d'Excel actuellement et créer des fiches de vie ( d'ate d'envoi au STT pour étalonnage, date de retour, changement d'affectation, envoi/retour en réparation ... )
Je vois que vous êtes plsr à avoir déjà fait ce travail, alors si vous pourriez m'aider ?
Please.
Merci d'avance.
Ice -
salut c concernant ton autre message tu dis que tu est une pro du sexe jaimerai bien voir ca ecrit moi stephano56@hotmail.com jattend de tes nouvelle xxx
-
ContributeurMeûûûh nôôôôn, t'es pas chiante!
pour masquer
Sub voirlavie()
Dim tablo()
Dim cptr As Long, fin As Long, premlig As Long, derlig As Long
Application.ScreenUpdating = False
With Sheets("fiche de vie")
.Range("A36:J11200").ClearContents
.Rows(1 & ":" & 1220).Hidden = False
premlig = .Range("N2")
derlig = .Range("N1")
tablo = Sheets("Modification ").Range("B" & premlig & ":E" & derlig).Value
fin = UBound(tablo)
For cptr = 1 To fin
.Cells(35 + cptr, 1) = tablo(cptr, 1)
.Cells(35 + cptr, 2) = tablo(cptr, 2)
.Cells(35 + cptr, 7) = tablo(cptr, 3)
.Cells(35 + cptr, 10) = tablo(cptr, 4)
Next
.Rows(36 + fin & ":" & 1220).Hidden = True
End With
End Sub
Pour le coup de la ligne, va falloir passer par un userform, on verra ça demain
Bonne soirée
Michel -
Je suis vraiment désolée de revenir à la charge mais j'aurais encore qq questions!!!! tu dois m'en vouloir :-)
en fait ce qui serait sympa c'est que dans la fiche de vie a la fin du tableau je mette la date de la mise à jour ainsi que la signature du responsable, donc l'idée serait de masquer les lignes qui ne serait pas utilisée. Je pensais mettre en fixe sur une ligne quelconque la date et la signature et dans la macro ajouter une commande qui efface les lignes ou il n'y a rien. Il me semble que la fonction .EntireRow.Hidden pourrait peut être fonctionner mais je ne vois pas comment l'intégrer!
Encore une question (eh oui je sais je suis chiante): est il possible de masquer, dans ma feuille modification, les autres lignes et ne garder qu'une seule ligne pour l'utilisateur?
Bon moi je vais terminer de mettre à jour toutes les données,
d'avance merci
MILLES MERCI pour toute ton aide -
ContributeurRe,
C'était LA vach...
il ya un espace après modification dans le nom de l'onglet d'où le message "l'indice n'appartient pas à la sélection"
donc ces instructions marchent chez moi:
premlig = .Range("N2")
derlig = .Range("N1")
tablo = Sheets("Modification ").Range("B" & premlig & ":E" & derlig).Value
explications sur le fonctionnement car il va être + prudent d'amener une amélioration
premlig donne le n° de la première où on rencontre la ref cherchée par ex pour 1-009 c'est la ligne 22 et pour la dernière ligne de la ref derlig renvoie 56
le tablo contenant les données est donc ici B22:E56 d'où la syntaxe de la ligne "tablo" ("B" & premilg....)
On utilise un tableau VBA (array) car la restitution n'est pas dans des colonnes jointives d'où la boucle mais l'avantage est que le bloc à transporter est pris en compte avec 1 instruction au lieu d'une boucle parcourant la zone ( environ 20 fois plus rapide)
<souligne>ET l'amélioration?:
si l'utilisateur oublie de trier la zone de modif après la saisie d'une opération de maintenance sur (1-009), tablo va comprendre les lignes 22 à.. 865!!! ( si il y a une ânerie à faire, on est sûr qu'elle va se faire: règle d'or du parfait petit programmeur)
donc je te suggère de copier cette macro dans le module feuille modification de VBe (clic droit sur onglet-code) qui triera (donc regroupera) les ref automatiquement dès que tu quitteras la feuille "modification"
Private Sub Worksheet_Deactivate()
Range("A1:E30000").Sort Key1:=Range("A3")
End Sub
Tu peux alors supprimer le bouton et la macro "click" que j'avais installé hier
Dernier point: nommes tes cellules
n'hésite pas au cas où (je suis peinard au boulot sauf demain aprem)
Michel -
-
voici le lien
merci -
ContributeurBonjour,
envoie la b^te (ou un extrait)sur cjoint
Michel -
Hello Michel,
Encore une fois mille merci pour ton aide, par contre j'ai un petit soucis pour l'exécution de la macro à ce niveau:
tablo = Sheets("requete acces").Range("T" & premlig & ":W" & derlig).Value
J'ai beau remplacé le nom de ma feuille, les lettrT et W puisque maintenant avec toutes les données il s'agit d'autre colonne, rien n'y fait. En plus je ne comprend pas l'action qui est déclenchée à ce moment. Les autres actions j'ai plus ou moins compris, bon je n'aurais jamais trouvé toute seule.
Alors si tu veux bien encore m'expliquer ce point cela serait vraiment gentil de ta part!!
Merci et bonne journe :-) -
Contributeurre,
Il faut que le curseur clignote dans la barre de formule
ET
"ref" et "liste" sont des cellules nommées
liste:
'Requete ACCES'!$A$3:$A$30000
ref:
='Fiche de vie'!$C$12
Bonne soirée
Michel -
OK c'est super sympa de ta part, cela fonctionne. Bon j'avoue que j'ai du mal a comprendre bien toute les formules!!
par contre je n'arrive pas à faire la validation matricielle. Lorsque je tape la formule je fais Ctrl+Flèche vers le haut+entrée mais j'ai "NOM" qui apparait.
Comment dois je faire?
merci en tout cas -
Contributeurci joint proposition
à vérifier: je suis au boulot et souvent dérangé donc...
https://www.cjoint.com/?expmdQuW1J -
Contributeurre,
C'est pratiquement fini; des vérifs à faire: je t'envoie ca en début d'aprem (si on me laisse tranquille)
je t'ai laissé un peu de boulot à faire sur la partie fixe
Bon app
Michel -
oui c'e'st bien cela, ce qui est en rose représente des données fixes sur l'équipement et ce qui est en rouge dans la requete représente la fiche de vie a proprement dit de l'équipement
Dès que je modifie un équipement je sélectionne le numéro et j'imprime la "fiche de vie" pour pouvoir archiver
aucun soucis pour rajouter une colonne, je n'en tiendrais pas compte lors de l'impression de la fiche de vie
merci -
ContributeurOkay,
dans la fiche de vie on choisi la référence en C12 (1-007, 1-009....) et à partir de là on a ses caractéristiques (recherchev) et les événements durant sa vie (macro)
C'est bien cela ?
puis je disposer d'une colonne intermédiaire à la droite du tableau feuille de vie ? colonne M ou N ou....
dans l'attente -
-
Je vous mets sur le site que Mike m'a communiqué une partie de mon fichier!
merci -
ContributeurSalut Prisci,
Avant de me lancer dans de nouvelles aventures...
Ci joint un fichier ou le pb posé était voisin du tien posté sur ce site le 16/4 (auquel avait participé aussi Mike31, salutations, et sans remerciements du demandeur Charrlot, comme d'hab)
Tu regardes et si ca te va on l'adaptera à ton systeme: apparamment y'aurait pas trop de boulot.
https://www.cjoint.com/?exiTupOYOH
Michel -
Alors je vais essayer d'être un peu plus claire. En fait je dois créer des fiches de vie pour chacun de nos appareils de mesures. On a donc pour chaque appareil un historique avec des dates d'envoi pour étalonnage ou pour réparation. Chaque fois que nous envoyons un de nos appareils nous devons le stipuler dans la fiche de vie. Nous utilisions auparavant la base ACCES mais cela devient trop lourd à gérer! J'ai donc effectuer une requete pour pouvoir récupérer les données d'Acces et pour le moment j'en suis à 866 lignes et 23 colonnes. Parmi ces colonnes il y a des données qui sont repris à chaque fois, les caractéristiques technique de chaque appareils ne sont pas modifiées lors d'un envoi, donc pour ces données c'est OK je fais une rechercheV. Par contre là ou je bloque c'est pour mettre le tableau à jour. Ce tableau prend en compte 4 colonnes (date, opérations effectuée, observations et N° du certificat).
Ce que je souhaite c'est dès que j'envoi un de mes appareils le tableau se met à jour.
J'ai plus d'une centaine d'appareils donc je ne peux pas faire une feuille Excel pour chaque appareil je pense?? et faire peut être une interface avec VB pour pouvoir chercher un appareil?
J'espère avoir été un peu plus précise quant à ma recherche!!
D'avance merci à tous pour votre aide!!!! -
ok c'est gentil merci
-
Salut,
tu peux passer avec la fonction recherche, mais il faut que tes références soient unique dans ton tableau.
donnes plus de précision sur ton tableau nombre de colonne etc ou joint grace à ce lien un modèle ce sera plus facile
https://www.cjoint.com/
A+
-
- 1
- 2