Bonjour à tous,
Je travail depuis quelque temps sur une base de données qui réalise des calculs, des graphiques, de nombreuses recherches, etc. Aujourd'hui le travail est plus ou moins terminé mais je rencontre des problèmes qui sont gênant dans la mesure ou je ne serais pas le seul utilisateur de ce fichier.
Il y a deux problèmes principaux que je n'arrive pas à régler, ils n'empêchent néanmoins pas le programme de fonctionner, ces deux problèmes ont un points communs ils apparaissent a chaque fois que je relance le programme.
Le premier concerne une validation de donnée réalisée par macro, pour résumer, mon programme réalise un très grands nombre de validations de données sur différentes feuilles qui fonctionnent très bien, sauf que lorsque que je ferme mon fichier et que l'ouvre le lendemain il m'affiche le message disant qu'Excel n'a pas récupéré l'intégralité du fichier et il m'annonce qu'il a dû supprimer la validation des données. Ce qui m'oblige a recompiler mon code pour les réafficher a chaque fois (code qui prend 5/6 min a s'exécuter).
La ou cela devient compliqué c'est que cela ne se produit pas nécessairement a chaque ouverture du ficher (parfois mes listes sont conservées) et en général seulement sur une des feuilles alors que plusieurs feuilles contiennent le même code fonctionnant de la même manière. Je vous transmet le code qui me réalise mes validations de données :
J'ai un second problème qui me semble bien plus simple à résoudre, j'affiche des graphiques (image gif) dans un Userform avec différents onglets ainsi que des checkbox qui modifient les données à afficher etc. Cela fonctionne également très bien sauf que lorsque je relance mon programme si je lance ma macro pour afficher mes graphiques on me dit erreur 481 image incorrect.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 If Target.Column <> 3 Then Exit Sub Else 'si le changement a lieu dans une des trois premières lignes, sort de la procédure If Target.Row < 4 Then Exit Sub 'If Target.Row = J Then Sheets("Uw Aluminium").Cells(J, 6) = "" If Selection.Cells.Count > 1 Then Exit Sub 'si plus d'une seule cellule sélectionnée, sort de la procédure If Target.Value = "" Then Sheets("Uw Aluminium").Cells(J, 6).Clear: Exit Sub 'si la cellule est effacée, efface la cellule en colonne I (tout) Set OB = Worksheets("BDD") 'définit l'onglet OB TV = OB.Range("A1").CurrentRegion 'définit le tableau des valeurs TV Set D = CreateObject("Scripting.dictionary") 'définit le dictionnaire D For I = 1 To UBound(TV, 1) 'boucle sur toutes les ligne I du tableau des valeurs TV 'si la valeur de la donnée (convertie en texte) ligne I colonne 1 de TV est égale 'à la valeur (convertie en texte) de la cellule modifiée (forcément en colonne C) 'alimente le dictionnaire D avec la valeur ligne I colonne 5 de TV If CStr(TV(I, 3)) = Sheets("Uw Aluminium").Cells(J, 3) And CStr(TV(I, 6)) = "Périphérique" Then D(TV(I, 5)) = "" Next I 'prochaine ligne de la boucle With Sheets("Uw Aluminium").Cells(J, 6).Validation 'prend en compte la validation de données de la cellule décalée d'une colonne à droite (colonne B donc) .Delete End With TT = D.KEYS 'récupère dans le tableau temporaire TT la liste des éléments du dictionnaire D sans doublon L = Join(TT, ",") 'définit la liste L If Not L = "" Then 'condition : si la liste L n'est pas vide (ça peut arriver si aucune occurrence 'de la cellule éditée n'est trouvée dans la base de données de l'onglet O) With Sheets("Uw Aluminium").Cells(J, 6).Validation 'prend en compte la validation de données de la cellule décalée d'une colonne à droite (colonne B donc) .Add xlValidateList, Formula1:=L 'ajoute une validation de donnée avec la liste End With End If 'fin de la condition Set D = Nothing End If
Je suis obliger pour régler cela d'aller sur mon onglet "graphiques" d'Excel la ou se trouvent mes graphiques qui s'affichent dans un second temps dans l'Userform et de parcourir tout mes graphiques comme si excel avait besoin que je charge les images avant les afficher dans mon userform.
J'ai tenté les fonction Refresh sur ma feuille mais pour le moment cela ne fonctionne pas.
J'ai hésité a créer deux sujets différents pour chaque soucis mais je ne voulais pas encombrer le forum j'espère que cela ne pose pas de problème.
Merci d'avance à tous pour votre aide.
Ounett
Partager