SQL - requête pour éditer une seule cellule

Bonsoir,

je souhaite mettre à jour une valeur dans un fichier .xlsx via la méthode ADO/SQL, mais je ne pas les commandes à appeler dans la requête SQL pour insérer le contenu d'une variable dans une seule cellule. J'ai essayé ceci (entre autre)

"UPDATE [MOIS 1er$] SET [MOIS 1er$S6:S6] = '" & budgAnte & "'"

Mais ça ne fonctionne pas, et je n'ai rein trouvé sur le net qui puisse répondre à cela...

Mezrci de votre aide ;)

Bonsoir,

si tu nous fournissais un fichier d'exemple anonymisé.

te demande est trop vague et ton exemple non fonctionnel !

Bonsoir dysorthographie,

Merci pour ta réponse.

Voici le fichier en pj ainsi qu'une capture d'écran de la procédure

capture d ecran 2022 12 11 212548
            With CreateObject("ADODB.Connection")
                .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dest & "\" & monthFile & ";Extended Properties=""Excel 12.0;HDR=NO;"""
                .Open
                .Execute "UPDATE [MOIS 1er$S6:S6]  SET [F1] = '" & budgAnte & "'"
                .Close
            End With

Merci pour ton retour,

Je viens de tester ta proposition mais une erreur apparait. je joins un screen de celle-ci

testsolutiondysor

désolé j'ai testé chez moi et ça a fonctionné!

Sub test()
Const dest = "C:\Myrep\Fichier Fermé", monthFile = "Classeur Destination.xlsx"
            With CreateObject("ADODB.Connection")
                .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dest & "\" & monthFile & ";Extended Properties=""Excel 12.0;HDR=No;"""
                .Execute "UPDATE [MOIS 1er$S6:S6] set [F1]= 'budgAnt'"
                .Close
            End With
End Sub

Re,

j'ai testé plusieurs fois en essayant de modifier la syntaxe du execute. Ca me met la meme erreur :/

secondtest

Bonjour SHTOURS, dysorthograhie

Peut-être essayer avec un autre type de connexion

Set connexion = CreateObject("ADODB.Connection")
With connexion
  .Provider = "MSDASQL"
  .Open "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" & dest & "\" & monthFile & "; ReadOnly=False;"
End With
sqlSuit = "UPDATE [MOIS 1er$] SET [MOIS 1er$S6:S6] = '" & budgAnte & "'"
Set requete = connexion.Execute(sqlSuit)

A+

Bonjour BrunoM45

Merci pour ta réponse.

Je viens de tester mais, le message d'erreur est formulé différemment, c'est le meme soucis.

:/

Ci-joijnt le screenShot

testsolutionbrunom45

j'ai essayé sur une autre feuille dont aucune cellule n'est fusionnée ; mais ça donne le meme message d'erreur ..

Bonjour Dysothographie, BrunoM45,

J'ai du neuf,

Je viens de retester la méthode proposé par Dysorth et ça me fait le message d'erreur suivant "Cette table contient des cellules hors de la plage de cellules définie dans cette feuille de calcul"

j'ai testé en modifiant la requete sql avec "UPDATE [MOIS 1er$A1:A1] set [F1]= 'budgAnt'" au lieu de

"UPDATE [MOIS 1er$S6:S6] set [F1]= 'budgAnt'"

Et dans ce cas-ci ça fonctionne parfaitement

Mais si je mets "MOIS 1er$A6:A6" ou encore "MOIS 1er$S1:S1", le même message d'erreur survient.

Je n'arrive pas à m'expliquer pourquoi ça ne fonctionne pas chez moi.. J'ai office 365..

horsplagecelldef

bonjour,

le code que je t'avais donné fonction.

A mon avis le problème est ailleurs.regades les propriétés et/ou sécurité du fichier !

re Dysothographie,

j'ai créé un nouveau classeur pour la macro et de nouveau un fichier "Classeur Destination.xlsx"

Et niveau sécurité/propriété j'ai vérifié et ne trouve rien de restrictif...

Je ne sais plus où chercher là. Encore deux heures que je viens de passer à faire des recherche, je ne trouve rien.

As tu des pistes de réflexion concernant les propriétés/sécurité?

Merci à toi,

Dans l'explorateur Windows tu fais un click droit sur le fichier ; tu vérifies la lecture seul; puis tu vas sur l'onglet sécurité et tu vérifies que tous les types d'utilisateur sont autorisés

de plus maintenant il y a la notion de répertoire approuvé !

Okay,

Je vais regarder ça. Cependant, je suis assez étonné que ça puisse impacter "partiellement" l'opération d'écriture dans le fichier.. mais bon la situation est étonnante donc ...

J'ai office 365..

je viens de comprendre c'est pas Excel 12 c'est Excel 16!

Ah ok... Alors le pb viendrait de là.. Mais c'est bioen la première fois que ça pose soucis ...

C'est donc cette ligne qu'il faut modifier j'imagine :

ConnectionString = "Provider=Microsoft.ACE.OLEDB.16.0;Data Source=" & dest & "\" & monthFile & ";Extended Properties=""Excel 16.0;HDR=NO;"""

J'ai essayé en mettant "16" à la place des 12 mais ça génère un message d'erreur indiquant "pilote ISAM" introuvable

si tu vas dans le menu outils=>références tu trouveras si tu est en 12 ou 16 je pense que 365 est en fonction de 32 ou 64 Bits

a force de chercher on se fait des nœuds au cerveau !

Voici ce que j'ai de coché effectivement

La solution serait de décocher?

versionexcel

Non ça veut dire que tu est bien en 16 cette librairie ne peut pas être décocher sans elle pas de VBA

regardes sur Google une connexion adodb Provider=Microsoft.ACE.OLEDB.16.0

il ce peut que la syntaxe soit légèrement différentes !

moi je suis sur 2007 donc je ne pourrai pas tester mais je vais chercher de mon côté également.

Rechercher des sujets similaires à "sql requete editer seule"