XL 2016 Problème avec array

kingfadhel

XLDnaute Impliqué
Bonsoir à tous,
J'ai un tableau mensuel (données brutes "DEF_GRH_2019_001.xlsx) que je dois le traiter par unités et par défaillances ....
J'ai aussi un classeur TBD sur lequel plusieurs tableau avec des détails
==> donc je dois importer les données brutes sur le TBD.
J'ai réussi à importer les données brutes dans un array, et j'ai réussi aussi extraire les données voulues et les stocker dans un array aussi,
le problème que je recontre est le suivant:
je ne réussi pas à transférer le tableau (array) dont je stock les données voulues à une feuille,
par contre dans la requête j'ai réussi à transférer les données voulues une par une dans la feuille.

Comment transférer les données stockées dans un array vers un emplacement spécifique exemple [A1]
 

Pièces jointes

  • DEF_GRH_2019_001.xlsx
    125.9 KB · Affichages: 23
  • Requete Classeur Fermé.xlsm
    19.5 KB · Affichages: 15
Solution
Bonjour King,
et avec Mégane pas de problème?
VB:
Sub testdysorthographie()
    Dim Bd, arr, col&, ligne2&, x&
    ChDrive ThisWorkbook.Path: ChDir ThisWorkbook.Path
    Bd = Application.GetOpenFilename("Excel Files (*.xlsx), *.xlsx", , "Selectionnez un  classeur source")    'dialog fichier

    If Bd = False Then MsgBox " operation de récupération annulée": Exit Sub    'on sort si on annule dans le dialog

    'valeur recherchée dans la colonne 12 du tableau structuré du fichier fermé
    arr = " (3200000, 3000001, 3200020, 3200100, 3200110, 3200120, 3210000, 3212000, 3212010, 3212100, 3212110, 3212120, 3212200, 3212210, 3212220, 3212300, 3212310, 3212320, 3212400, 3212410, 3212420, 3212430, 3220000, 3220010, 3221000, 3221100, 3221110...

kingfadhel

XLDnaute Impliqué
Bonsoir à tous,
@dysorthographie comment ajouter un count à la commande sql?
Votre code m'a mis sur une nouvelle et meilleure piste.
Comment compter le nombre de jours relatifs à un service et un type de défaillance bien déterminer.
J'ai essayé de modifié le code mais je n'arrive pas à lire le résultat
Comment récupérer le résultat de la requête dans une cellule : D4 par exemple

Requete:
Sql = "select Count([NB_JOUR]) from [Feuil1$] where [CDPOSTE] ='" & 3111220 & "' and [CODEF]='" & 16 & "'"

Sub testdysorthographie()
Dim Bd, arr, col&, ligne2&, x&
ChDrive ThisWorkbook.Path: ChDir ThisWorkbook.Path
Bd = Application.GetOpenFilename("Excel Files (*.xlsx), *.xlsx", , "Selectionnez un classeur source") 'dialog fichier

If Bd = False Then MsgBox " operation de récupération annulée": Exit Sub 'on sort si on annule dans le dialog

With CreateObject("ADODB.Connection") 'on créée l'object ADODB.connection( en annonyme il sera detruit en sortie de end sub)
Sql = "select Count([NB_JOUR]) from [Feuil1$] where [CDPOSTE] ='" & 3111220 & "' and [CODEF]='" & 16 & "'"
.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Bd & ";Extended Properties='Excel 12.0;HDR=Yes'" 'on ouvre adobd.connection
.Close 'on ferme adobd.connection
'Comment récuperer le résultat de la requete dans la cellule D4
End With
End Sub
 

patricktoulon

XLDnaute Barbatruc
bonsoir @kingfadhel
arrivé a un moment il faut se demander si une requête ne devient pas trop complexe
et alors revenir sur une variable tableau sur la quelle tu pourra toujours travailler
je ne remet pas en cause le where in de robert mais tout simplement l’intérêt a ce que qu'une macro soit modifiable ou plus facile a déboguer
l'exercice de style c'est bien mais un moment il faut avancer
je te laisse méditer sur ce point ;)
 

dysorthographie

XLDnaute Accro
Bonjour King et bonjour Patrick,

pour moi les limite de requête sql sur Excel est lié au fait qu'il ne dépasse pas la taille d'un fichier 2003 {XLS}, ainsi l'absence de la méthode delete!

mais effectivement on peut ce poser la question du SQL ou VBA et variable tableau!

pour ce qui concerne la requête de King, pour mois les CDPOSTE et CODEF sont du numérique!
VB:
Sql = "select Count([NB_JOUR]) from [Feuil1$] where [CDPOSTE] =3111220 and [CODEF]=16"
 
Dernière édition:

kingfadhel

XLDnaute Impliqué
Bonjour,
Code:
SQL="Update [Feuil1$] set [CODEF]=123456 where [CDPOSTE] =3111220 and [CODEF]=16"
Cn.execute SQL

J'ai écris cette requête mais ca ne marche pas:
VB:
With CreateObject("ADODB.Connection")
Sql = "UPDATE [Feuil1$] SET [NB_JOUR]=[DATE_FIN]-[DATE_DEBUT]+1 WHERE [CODEF]='" & 52 & "'"
.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & BD & ";Extended Properties='Excel 12.0;HDR=Yes'"
.Execute (Sql)
.Close
End With
 

kingfadhel

XLDnaute Impliqué
Re,
une erreur c'est produite:
1619469556678.png
 

Statistiques des forums

Discussions
315 123
Messages
2 116 458
Membres
112 747
dernier inscrit
Boudiou