Bonjour à toutes et tous,
Je vous écris car j'ai un problème un peu particulier et je ne comprend pas pourquoi ça ne marche pas , ce qui est rageant .
Mon problème est donc à propos d'une macros, celle-ci permet de se connecter à une base de données (os 400) et donc de récupérer des données pour les mettre dans une feuille. Ensuite je dois traiter ses données dans une autre feuille qui contient un tableau croisé dynamique.
Jusque la je n'ai pas eu beaucoup de problème ( bien que j'ai du faire 2 boutons pour arriver à mes fins). Aujourd'hui, il m'est demandé de protéger ces données récupérées (données comptable ..), et c'est la que j'ai mon problème .
Voici ma fonction, qui est appelée par un premier bouton :
nettoyer_page est une fonction qui comme son nom l'indique nettoie ma page à l'aide d'un Clear.Content .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Sub chargement_des_donnees() Call nettoyer_page Sheets("Detail SO in process").Unprotect Password:="root" If Feuil1.Range("B1").Value <> "" Then Call refresh_sql End If Sheets("Detail SO in process").Protect Password:="root" End Sub
Puis une autre et dernière fonction qui est appelée par un deuxième bouton, logiquement après avoir chargé les données via le premier bouton.
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 Sub refresh_sql() Dim v_numSO As Long v_numSO = Worksheets("Feuil1").Range("B1").Value Sheets("Detail SO in process").Select sqlstring = "maQuery" connstring = _ "ODBC;DSN=********; UID=*****;" With ActiveSheet.QueryTables.Add(Connection:=connstring, _ Destination:=Range("A2"), Sql:=sqlstring) .Refresh End With End Sub
Et donc avec ce code je ne peux pas charger mes données dans ma feuille Détail SO, un message d'erreur me signale que l'action n'est pas possible car ma feuille est verrouillée. Le pire est que tout marche parfaitement lorsque je le fais en pas à pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Sub mise_en_page() Sheets("Detail SO in process").Unprotect Password:="root" Worksheets("Detail SO in process").Rows(2).EntireRow.Delete Worksheets("Feuil1").PivotTables("Tableau_croise_dynamique2").PivotCache.Refresh Sheets("Detail SO in process").Protect Password:="root" End Sub
Je n'y comprend plus rien !!!!
J'avais déjà le même genre de problème avec la suppression de ma ligne dans ma fonction mise_en_page, d’où le second bouton. Mais pas possible de ruser pour mettre un troisième bouton ça perdrais tout son sens.
Enfin bref, toutes suggestions, remarques ou idées sont les bienvenues
Partager