Problèmes d'enregistrement récurents
Bonjour à tous et à toutes,
Je m'adresse à vous car je commence un peu à désespérer sur un document Excel sur lequel je travaille. Je travaille dans le domaine de la biologie et Excel est un des outils le plus utilisé. J'ai commencé en septembre 2023 à travailler sur un nouveau tableau Excel afin de mieux répondre à nos besoins.
Vous trouverez mon fichier Excel joint à ce post pour que vous puissiez voir de quoi je parle.
Afin d'essayer de vous faire comprendre ce document et son utilisation voici ses objectifs :
- suivre les caractéristiques des "lots d'aliquotes" d'une "sonde" que nous commandons fréquemment. L'onglet "sonde suivi" permet de différencier les "lots des aliquotes" de cette même sonde car à chaque commande ce numéro change. A la réception, nous remplissons cet onglet avec 1 tube = 1 ligne.
- suivre l'utilisation de chaque "lots d'aliquotes" dans les onglets "Modèle_LotsX": 1 ligne de la feuille "sonde suivi" = 1 onglet.
Nous pouvons parfois recevoir de nombreux tubes d'un coup et ayant des personnes dans l'équipe ne maitrisant pas du tout Excel, nous avons décidé de faire une macro afin de ne pas avoir besoin de dupliquer l'onglet "Modèle_LotX" et de compléter des cellules spécifique type "=Modèle_LotX!E28" (je vous laisse aller voir la macro dans le document Excel). Certaines cellules sont aussi protégés à la modification afin d'éviter les modification intempestives (je vous ai libéré ces cellules dans l'Excel partagé afin que vous ne soyez pas limités dans vos actions).
Il s'agit d'une macro que j'ai essayé de simplifier au max suite aux problèmes que j'ai pu avoir. Ainsi, afin d'alléger la macro, certaines cellules contiennent des formules type "=RECHERCHEV(D4;Sonde_Suivi!E16:K101;4;FAUX)" afin de renvoyer à des valeurs d'un autre onglet. J'aimerai ajouter cette formule à une autre colonne mais j'ai peur que cela aggrave mon cas...
Après plusieurs tests, nous avons décidé de mettre en route quelques feuilles Excel de plusieurs sondes afin de tester son utilisation. Nous nous somme alors rapidement confronté à un problème apparu après quelques semaines d'utilisation (cf image ci-dessous) :
La première fois, ça ne m'a pas inquiété car je supposait que cela vienne d'erreurs d'enregistrement aléatoire. J'ai donc restauré une version antérieure ce qui a permis l'enregistrement du document sans soucis.
Le problème est que ce message d'erreur n'est pas apparu qu'une seule fois ni sur 1 seul des 30 tableau Excel mis en place. Parmi les 30, cinq présentent ce message et de manière récurrente. J'ai alors décidé qu'à chaque problème, au lieu de restaurer une version antérieure, j'allait recréer le tableau à partir du modèle (celui joint à ce post). Malheureusement, certains tableaux recréés et des nouveaux fichiers ont continué d'afficher ce message d'erreur après plusieurs semaines d'utilisation. J'ai donc allégé ma macro qui après quelques recherches était, en effet, bien complexe par rapport à ce que je voulais faire ^^. Encore une fois et malgré tout, le problème persiste toujours.
J'ai donc recréé un nouveau modèle de A à Z sans aucun copié/collé, afin d'éviter de transmettre des données corrompues à mon nouveau document, mais encore une fois ce problème est apparu. J'ai donc essayé de recompiler mon document ce qui ma permis de me rendre compte que le menu déroulant de la colonne L de l'onglet "Suivi_Sonde" renvoyait à un autre onglet ce qui pouvait être problématique. J'ai donc corrigé ce problème. Et encore une fois, le problème persiste toujours.
Aujourd'hui je suis bloquée, j'ai conscience de mes limites sur Excel et actuellement je les ait atteintes. J'ai tellement cherché sur ce document qu'il est possible que je passe à côté d'une évidence j'en suis consciente
Je vous remercie par avance,
Julia
Bonjour Julia Msnr,
Une première étape : Feuille "Sonde Suivi", bouton "Nouvelle sonde", vérifier si la nouvelle sonde existe déjà, sinon créer les feuilles nécessaires.
Désolé si les commentaires sont de langue anglaise, c'est la faute à ChatGPT.
Sub test()
Dim newSheetName As String
Dim lastValue As String
' Get the last value in the "E15" column
lastValue = Sheets("Sonde_Suivi").Range("E15").End(xlDown).Value
newSheetName = lastValue
' Check if the sheet with the new name already exists
If Not FeuilleExiste(newSheetName) Then
' Rename the last sheet to the new name
With Sheets(Sheets.Count)
.Name = newSheetName
End With
' Copy the "Modèle_LotX" sheet and place it after the last sheet
Sheets("Modèle_LotX").Copy After:=Sheets(Sheets.Count)
' Set the value in the new sheet
Sheets(Sheets.Count).Range("D4") = newSheetName
' Add a hyperlink to the new sheet
ActiveSheet.Hyperlinks.Add Anchor:=Sheets("Sonde_Suivi").Range("E15").End(xlDown), _
Address:="", SubAddress:="'" & newSheetName & "'!A1"
Else
MsgBox "Pas de nouvelle sonde trouvée"
Exit Sub
End If
End Sub
Function FeuilleExiste(Nom As String) As Boolean
Dim Feuille As Worksheet
FeuilleExiste = False
For Each Feuille In Worksheets
If Feuille.Name = Nom Then
FeuilleExiste = True
Exit For
End If
Next Feuille
End FunctionBizz
Bonjour,
Après plusieurs tests, nous avons décidé de mettre en route quelques feuilles Excel de plusieurs sondes afin de tester son utilisation. Nous nous somme alors rapidement confronté à un problème apparu après quelques semaines d'utilisation (cf image ci-dessous) :
D'après ce que je comprends et sans voir votre vrai fichier, vous avez dû faire un copier-coller d'un autre fichier. Notamment peut-être dans votre colonne Reference où je vois que vous avez mis un lien Hypertexte pour les références de sonde (c'est le souci des liens hypertextes...).
S'il y a une liaison à un autre fichier, vous pouvez le vérifier en sélectionnant une cellule puis en allant dans le menu Insertion --> icone "liens"
Autre manière de vérifier --> Allez dans le menu Fichier --> Informations. En bas à droite, vous devriez voir une information "Modifier les liaisons"
Concernant votre code essayez ceci (variante sans ChatGpt) :
Sub test()
Dim dlg As Integer, i As Integer
Dim nom As String
dlg = Sheets("Sonde_Suivi").Range("E" & Rows.Count).End(xlUp).Row 'derniere ligne feuille suivi
If dlg = 15 Then Exit Sub 'si derniere ligne = 15 on sort du code
nom = Sheets("Sonde_Suivi").Range("E" & dlg) 'nom de la feuille
'verifier si feuille existe
For i = 1 To Sheets.Count
If Sheets(i).Name = nom Then MsgBox "Cette feuille existe déjà", vbOKOnly + vbCritical, "Feuille existante": Exit Sub
Next i
Sheets("Modèle_LotX").Copy After:=Sheets(Sheets.Count) 'dupliquer feuille modele
With ActiveSheet
.Range("D4") = nom
.Name = nom
.Hyperlinks.Add Sheets("Sonde_Suivi").Range("E" & dlg), Address:="", SubAddress:="" & Sheets(Sheets.Count).Name & "!A1"
End With
End SubCordialement
Bonjour à tous, Julia,
Essayez d'enregistrer vos fichiers au format binaire ".xlsb" vos macros sont conservées
Cela permet parfois de résoudre les problèmes
A+
Bonjour à tous,
Merci d'avoir si rapidement répondu à mon post !
Je vais essayer tout ça et vous redis dans quelques semaines si le problème persiste.
Bon weekend à tous.