Bonsoir
Ootremer m'a proposé cette macro pour modifier l'arrière des champs de mon formulaires. Cela fonctionne parfaitement sur mon fichier anonymisé et simplifié mais j'ai un erreur lorsque je copie/colle la macro sur mon fichier principal.
Je suis embêtée car je comprends pas pourquoi.
La seule modification que j'ai faite c'est parce que mon fichier original comporte plusieurs feuilles formulaires, donc j'ai décliné la macro en autant que de formulaire et j'ai adapté le nom de la feuille dans le texte de la macro. Mais j'ai dû louper quelque chose...
Le message d'erreur n'apparaît pas quand je lance la macro depuis le triangle vert de lecture quand je fais éditer la macro. Par contre, le message d'erreur apparaît dès que j'utilise le bouton.
Pourriez-vous au moins me dire vers quoi chercher car je joins mon extrait de fichier (mais là la macro marche bien) sauf que je ne sais pas quoi ou comment tester pour savoir ce qui cloche.
Merci et bonne nuit
[Résolu] [Calc] Erreur d'exécution modification arrière plan
Modérateur : Vilains modOOs
Règles du forum
Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
-
- Membre hOOnoraire
- Messages : 146
- Inscription : 02 août 2017 21:55
[Résolu] [Calc] Erreur d'exécution modification arrière plan
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par Solaris le 29 avr. 2018 19:22, modifié 2 fois.
Libre office 7.3.2.2
Windows 11
Windows 11
-
- ManitOOu
- Messages : 2744
- Inscription : 16 avr. 2010 13:31
Re: [Calc] Erreur exécution macro modification arrière plan
Et ça t'étonne ?Solaris a écrit :Cela fonctionne parfaitement sur mon fichier anonymisé et simplifié mais j'ai un erreur lorsque je copie/colle la macro sur mon fichier principal.
On ne programme pas à tâtons et au pifomètre. Ce qui est écrit pour un contexte particulier n'est pas forcément adaptable à un autre contexte même ressemblant mais différent et cette façon d'agir fait fuir ceux qui tentent de t'aider car leur temps est précieux et tu le leur fais perdre. Pourquoi ne pas donner le bon contexte dès le départ au lieu de tenter d'adapter ensuite (sans compter les dégâts que cela peut occasionner sur fichier de travail (à l'image de celui qu'il à fallu refaire.
Pour que la macro fonctionne dans ton fichier test, j'ai aussi modifié le module "fondecran" comme ceci :
Code : Tout sélectionner
sub arriere_plan_conditionnel(event)
control = event.Source.Model
ChangeFond(control)
end sub
Sub ChangeFond(control)
fond1 = RGB(255,255,255) 'blanc
fond2 = RGB(0,205,255) 'vert
fond3 = RGB(255,204,153) 'orange
if isnull(control) then exit sub
control_type = split(control.DefaultControl, ".")(5)
select case control_type
case "ComboBox", "TextField"
if control.Text = "" or control.Text = control.DefaultText then
control.BackgroundColor = fond2
exit sub
end if
case "PatternField"
if control.Text = control.LiteralMask or control.Text = control.DefaultText then
control.BackgroundColor = fond2
exit sub
end if
case "FormattedField"
if control.Text = "" or control.EffectiveValue = control.EffectiveDefault then
control.BackgroundColor = fond2
exit sub
end if
case "NumericField", "CurrencyField"
if control.Value = 0 or control.Value = control.DefaultValue then
control.BackgroundColor = fond2
exit sub
end if
case "ListBox"
if ubound(control.DefaultSelection) < 0 then
if control.CurrentValue = "" then
control.BackgroundColor = fond2
exit sub
end if
elseif control.SelectedItems(0) = control.DefaultSelection(0) then
control.BackgroundColor = fond2
exit sub
end if
case "CheckBox"
if control.State = control.DefaultState then
control.BackgroundColor = fond3
exit sub
end if
case "DateField"
if isempty(control.DefaultDate) then
if isempty(control.Date) then
control.BackgroundColor = fond2
exit sub
end if
elseif isempty(control.Date) then
control.BackgroundColor = fond2
exit sub
else
d = control.Date
dd = control.DefaultDate
if d.Day = dd.Day and d.Month = dd.Month and d.Year = dd.Year then
control.BackgroundColor = fond2
exit sub
end if
end if
case "TimeField"
if isempty(control.DefaultTime) then
if isempty(control.Time) then
control.BackgroundColor = fond2
exit sub
end if
elseif isempty(control.Time) then
control.BackgroundColor = fond2
exit sub
else
t = control.Time
dt = control.DefaultTime
if t.Hours = dt.Hours and t.Minutes = dt.Minutes and t.Seconds = dt.Seconds then
control.BackgroundColor = fond2
exit sub
end if
end if
case else
end select
control.BackgroundColor = fond1
end sub
Mais bon, sans boule de cristal, je ne vois pas comment t'aider d'avantage.
@+
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Debian 10 et 11
AOO
LibreOffice
Debian 10 et 11
-
- Membre hOOnoraire
- Messages : 146
- Inscription : 02 août 2017 21:55
Re: [Calc] Erreur d'exécution modification arrière plan
Bonjour,
Désolée pour la perte de temps mais ne vous en offusquez pas et je m'en excuse sincèrement car c'est juste que je ne savais pas que cet élément était pertinent...
J'ai bien vu cette modification au niveau de fondecran et je l'avais intégrée bien sûr dans le fichier intégral puisque la macro ArrièrePlan renvoie vers ce fondecran.
Pour un structure plus complète du fichier et de l'organisation des macros, voici comment cela est installé.
Désolée pour la perte de temps mais ne vous en offusquez pas et je m'en excuse sincèrement car c'est juste que je ne savais pas que cet élément était pertinent...
J'ai bien vu cette modification au niveau de fondecran et je l'avais intégrée bien sûr dans le fichier intégral puisque la macro ArrièrePlan renvoie vers ce fondecran.
Pour un structure plus complète du fichier et de l'organisation des macros, voici comment cela est installé.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre office 7.3.2.2
Windows 11
Windows 11
-
- ManitOOu
- Messages : 2744
- Inscription : 16 avr. 2010 13:31
Re: [Calc] Erreur d'exécution modification arrière plan
Bonjour,
Lorsque je me positionne sur la feuille "Formulaire Charges" et que je clique sur le bouton "Actualise Arrière Plan", je n'ai aucun plantage. Ceci est valable pour tous les formulaires.
Est-ce que tu peux télécharger le dernier fichier que tu as mis en ligne dans ce fil et le tester sur une autre machine que la tienne ? Ou éventuellement sur la tienne, après l'avoir renommé pour ne pas le confondre avec un autre fichier, puis déplacé vers un répertoire dont tu sais qu'il n'est pas protégé en écriture.
@+
PS: j'ai du mal à comprendre pourquoi 4 des 5 formulaires de ton fichier sont identiques et servent à remplir les mêmes cellules de la même feuille Champs ? Un seul formulaire aurait suffit ou alors tu nous caches encore des trucs ?
Lorsque je me positionne sur la feuille "Formulaire Charges" et que je clique sur le bouton "Actualise Arrière Plan", je n'ai aucun plantage. Ceci est valable pour tous les formulaires.
Est-ce que tu peux télécharger le dernier fichier que tu as mis en ligne dans ce fil et le tester sur une autre machine que la tienne ? Ou éventuellement sur la tienne, après l'avoir renommé pour ne pas le confondre avec un autre fichier, puis déplacé vers un répertoire dont tu sais qu'il n'est pas protégé en écriture.
@+
PS: j'ai du mal à comprendre pourquoi 4 des 5 formulaires de ton fichier sont identiques et servent à remplir les mêmes cellules de la même feuille Champs ? Un seul formulaire aurait suffit ou alors tu nous caches encore des trucs ?
Ajout : J'ai un plantage sur la macro DeplacerDerLigne, et c'est normal, si la colonne A ne contient aucune valeur. Il faut corriger de cette façon : Code : Tout sélectionner
|
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Debian 10 et 11
AOO
LibreOffice
Debian 10 et 11
-
- Membre hOOnoraire
- Messages : 146
- Inscription : 02 août 2017 21:55
Re: [Calc] Erreur d'exécution modification arrière plan
Bonsoir,
Désolée de ma réponse y tardive j’ai eu quelques soucis.
Non j’en n’ai rien caché mais j’ai trouve la solution solution à mon pb : la patience...
Mon fichier intégral comporte environ 120 champs par feuille et j’en changeais de feuille avant que la macro ait fini son travail. J’attendais mais pas suffisamment et dans le document test il y a avait très peu de champs donc c’etait Quasi instantané!
Merci pour votre aide et votre patience
Désolée de ma réponse y tardive j’ai eu quelques soucis.
Non j’en n’ai rien caché mais j’ai trouve la solution solution à mon pb : la patience...
Mon fichier intégral comporte environ 120 champs par feuille et j’en changeais de feuille avant que la macro ait fini son travail. J’attendais mais pas suffisamment et dans le document test il y a avait très peu de champs donc c’etait Quasi instantané!
Merci pour votre aide et votre patience
Libre office 7.3.2.2
Windows 11
Windows 11
-
- IdOOle de la suite
- Messages : 25181
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
Re: [Résolu] [Calc] Erreur d'exécution modification arrière
Rappelons que pour bloquer l'affichage, on peut avoir recours à la méthode LockControllers.
Attention cependant car elle n'inhibe pas la frappe de touches qui sont bloquées puis libérées lors du UnlockControllers.
On peut également faire patienter avec un dialogue de barre de progression lancé en début de traitement long.
Pour ces deux concepts, nombreux exemples dans le forum à rechercher.
Attention cependant car elle n'inhibe pas la frappe de touches qui sont bloquées puis libérées lors du UnlockControllers.
On peut également faire patienter avec un dialogue de barre de progression lancé en début de traitement long.
Pour ces deux concepts, nombreux exemples dans le forum à rechercher.