Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel
Excel Forum d'entraide sur Excel. Vos questions sur les fonctions, formules, manipulations, et tout sujet qui ne trouve pas sa place dans un sous-forum.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/11/2011, 14h54   #1
Invité régulier
 
Inscription : septembre 2009
Messages : 53
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 53
Points : 8
Points : 8
Par défaut Format de cellule et ADODB.Connection

Bonjour à tous,

Je rencontre des problèmes avec les connexion SQL sur des fichiers xlsm.

En faite je possède un fichier, lorsque je modifie une certaines colonnes, je veut qu'un autre fichier soit mise à jour.

Jusque la pas de problème, tout fonctionne et voila mon code ( qui s'exécute sur un évènement worksheet change):
Code :
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
 
 ' # MODIFICATION CONDUITE
     If (result(1) = COL_CONDUITE) Then
         numeroUdpate = Cells(result(2), "E")
         valeurToUdpate = Cells(result(2), COL_CONDUITE)
         strSQL = "UPDATE [table$] SET [CONDUITE] = '" & valeurToUdpate & "' WHERE [numero] = " & numeroUdpate 
     End If
 
     ' # MISE A JOUR
     If (numeroUdpate <> Empty) Then
 
         Application.Cursor = xlWait
 
         Set cn = New ADODB.Connection
         With cn
             .Provider = "Microsoft.Jet.OLEDB.4.0"
             .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & GLOBAL_PATH_POT_DI & ";Extended Properties=""Excel 12.0;HDR=YES;"""
             .Open
         End With
 
         cn.Execute (strSQL)
         cn.Close
 
         Application.Cursor = xlDefault
     End If
Cependant, cela se corse lorsque je souhaite effacer des données.

Sur une de mes cellule que j'ai précédemment remplie, j'efface son contenu en appuyant sur supprimer ou effacer, le code s'exécute et le fichier distant est bien mise à jour.
Cependant si je réitère l'opération, cela ne fonctionne plus et aucune de mes modification ne marche ... Je ne peut plus rien faire, aucune valeur n'est mise à jour.

La seule solution que j'ai trouvé est d'ouvrir le fichier que je met à jour, clique droit sur les colonnes que je modifie : format et OK (sans rien toucher)

Je me demande donc si ce ne vient pas d'un problème du format de cellule quand j'efface la première puisque une fois que je revalide ce dernier je peut a nouveau modifier des cellules via des requêtes

Je trouve mon problème plutôt particulier et je vous en ai fait part parce que vraiment je ne comprend pas ...

PS : question bonus, est-il possible de crée plusieurs connexion sur un fichier excel en même temps (par exemple à partir de deux fichiers different ?)

Merci d'avance
Omsalam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 09h33   #2
Invité régulier
 
Inscription : septembre 2009
Messages : 53
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 53
Points : 8
Points : 8
Re à tous

Pour un peu plus de précision voila un message d'erreur que j'obtiens lorsque je me connecte à mon fichier :

Code :
1
2
3
4
5
6
7
 
         Set cn = New ADODB.Connection
         With cn
             .Provider = "Microsoft.Jet.OLEDB.4.0"
             .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & GLOBAL_PATH_POT_DI & ";Extended Properties=""Excel 12.0;HDR=YES;"""
             .Open
         End With
Après le open, quand je regarde les erreurs de CN j'obtiens ceci
Citation:
"Une opération OLE-DB en plusieurs étapes a généré des erreurs. Vérifiez chaque valeur d'état OLE-DB disponible. Aucun travail n'a été effectué
Pourtant ma première requête de suppression fonctionne bien même avec cette erreurs, mais peut être que ca cause des soucis par la suite.

Merci
Omsalam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2011, 20h25   #3
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 623
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 623
Points : 30 954
Points : 30 954
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Tu devrais lire ce tuto : Lire et écrire dans les classeurs fermés

Entre autre tu verrais que les connections multiples ne sont pas permises et d'autres choses : Les limites d'Excel utilisé comme une base de données

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 10h03   #4
Invité régulier
 
Inscription : septembre 2009
Messages : 53
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 53
Points : 8
Points : 8
Bonjour et merci Philippe

J'ai bien lu le cours et j'ai appris certains chose.
Cependant si je reprend mon problème :

- j'ai un fichier A disons 10 000 lignes
- j’ai un fichier B contenant 10 lignes provenant de A
- je met a jour certaines colonne de B
- le contenu des cellules modifier dans B sont répercuté dans A

Tout fonctionne très bien.

Si dans B, je supprime des colonnes via la touche del ou suppr ou alors même je met un espace :
- Le contenu est bien mise à jour avec la nouvelle valeur dans A
- Quand je tente de rechanger à nouveau B (avec des vrai valeur texte par exemple), le contenu de A n'est pas modifier.

De plus j'ai bien vérifier que je ne modifie pas les 8 première ligne pour laisser le type de donnée inchangé.

EDIT : La seule solution que j'ai trouver c'est lorsque la chaine a updater est vide ou represente un espace je la remplace par un "_" (caractère le moins visible)
Omsalam est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h41.


 
 
 
 
Partenaires

Hébergement Web