Contenant(FinBase) et ADODB.Connection

Bonjour très chère communauté!

Je suis en train de vouloir comprendre un code VBA et je suis tombé sur deux noms qui m'intriguent un peu. Il s'agit de :

  • "Contenant(FinBase)" contenu dans la ligne de code qui défini la re-dimension comme suit: ReDim Contenant(FinBase) As DonneeLigne
  • et "ADODB.Connection" contenu dans la ligne de code qui défini la re-dimension comme suit: Dim Conn As ADODB.Connection

Je vous remerci de m'aider à les comprendre SVP

Excellement votre

Bonjour Excellerateur

Il serait bien et sympa de nous donner le code en entier, même si je pense connaitre les réponses

image

Et la suivante que voici

image

Bonjour BrunoM45

Merci beaucoup pour votre contribution, je vous joint ci-contre les codes comme demandé.

A bientôt!

Excellement...

Bonjour Excellerateur,

Quand on met du code sur le forum ce doit être du texte entre balise grâce au bouton </> et non une image merci de faire le nécessaire.

Et je suppose que vous tirez ce code de quelque part, qu'il serait bien d'indiqué

Sinon de ce que je comprends :

Contenant() est un tableau, mais qui n'est pas déclaré
FinBase est une ligne dans ce tableau

ADODB.Connection permet de définir une connexion aux données en ADODB, il faut au préalable avoir ajouter la référence dans VBA Project

@+

Bonjour BrunoM45


Je vous remercie beaucoup pour votre retour, je vous avoue que je n'ai pas encore le modus operandi des conversations dans les forums (encore que celui-ci est
le premier dans lequel j'interviens).

Veuillez retrouver ci-dessous le code comme stipulé, si ça peut vous donner des éléments complémentaires d'analyse.

< Sub Controle_Des_Franchissements_Seuils()
'Vous pouvez utiliser l'instruction Type afin de déclarer un type de données personnalisé.
VerifPoint
If Depart = "KO" Then
Exit Sub
End If

Application.ScreenUpdating = False
Dim Base As Worksheet
Set Base = ThisWorkbook.Worksheets("base")
Dim FinBase As Long
FinBase = Base.Range("a2").End(xlDown).Row

Repfr = MsgBox("Voulez vous lancer le processus de franchissement de seuils?", vbInformation + vbYesNo, "FRANCHISSEMENTS DE SEUILS")
If Repfr = vbYes Then

Base.Range("A1").Value = ThisWorkbook.Sheets("Source").Range("A2").Value

ReDim Contenant(FinBase) As DonneeLigne

'Remplissage de Contenant
For i = 2 To FinBase
Contenant(i).PositionSociete = Base.Range("D" & i)
Contenant(i).RapportCapital = Base.Range("H" & i)
Contenant(i).RapportVote = Base.Range("J" & i)
Contenant(i).SeuilCapital = Base.Range("O" & i)
Contenant(i).SeuilVote = Base.Range("S" & i)
Contenant(i).ISIN = Base.Range("A" & i)
Next i

Base.Range("A2:AZ10000").ClearContents
Base.Range("A2:AZ10000").Font.Bold = False

'*********RECUPERATION DES ISIN***********

Partie_ISIN
'************************

'Remplissage de Contenant
For Indexbase = 2 To FinBase
For i = 2 To FinBase
If Base.Range("a" & Indexbase) = Contenant(i).ISIN Then
Base.Range("C" & Indexbase) = Contenant(i).PositionSociete
Base.Range("G" & Indexbase) = Contenant(i).RapportCapital
Base.Range("I" & Indexbase) = Contenant(i).RapportVote
Base.Range("N" & Indexbase) = Contenant(i).SeuilCapital
Base.Range("R" & Indexbase) = Contenant(i).SeuilVote
Base.Range("A" & Indexbase) = Contenant(i).ISIN

'Mise de la date
Base.Range("AD" & Indexbase) = ThisWorkbook.Sheets("Source").Range("A2").Value
End If
Next i
Next Indexbase


Partie_ISIN
Partie_Suite
Partie_Suite2
Partie_Suite3
Partie_Pays
FinProcess
VraiTraitement
VerifSeuil


Base.Range("a1:ag" & FinBase).AutoFilter

toto = MsgBox("Le traitement est terminé", vbInformation + vbOKOnly, "FRANCHISSEMENTS DE SEUILS")
Else
toto = MsgBox("TRAITEMENT ANNULE", vbInformation + vbOKOnly, "FRANCHISSEMENTS DE SEUILS")

End If

End Sub >

Et voici le deuxième code avec les expressions que je ne comprends pas surlignées mais dont vous avez commencé à donner des éléments de réponses.

<Private Sub Partie_ISIN()
Dim Base As Worksheet
Set Base = ThisWorkbook.Worksheets("base")
AdresseCompleteFichier = ThisWorkbook.FullName

Dim Conn As ADODB.Connection
Set Conn = New ADODB.Connection
Conn.CursorLocation = adUseClient
Conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & AdresseCompleteFichier & _
";Extended Properties=""Excel 12.0;HDR=yes;"";"

Dim Rst As ADODB.Recordset
Set Rst = New ADODB.Recordset

Rst.CursorLocation = adUseClient ' coté client plus de possibilité
Rst.Source = "SELECT distinct[Code_valeur],[Libelle_valeur] FROM [Source$]WHERE [Libelle_Tri_comptable] = 'Actions&valeurs ass, ng, sur un marché regl, ou as '"
Rst.ActiveConnection = Conn
Rst.CursorType = adOpenStatic 'Assez rapide. Permet d'avancer et reculer. Ne permet pas les modifications
'Rst.LockType = adLockUnspecified
Rst.Open
'Conn.Execute "SELECT distinct[Code_valeur] FROM [Source$]" 'Conn.execute ne permet pas d'ouvrir le recordet. On ne voitr pas le détail. Il faut ouvrir le recordset

'saugarder en un fichier xml ou adtg
'Rst.Save "Z:\rs\monrs.xml", adPersistXML

'Parcourir le recordset. Il faut connaitre le nombre de colonnes pour tout extraire
'While Not Rst.EOF
' Debug.Print Rst.Fields(0).Value
'Debug.Print Rst.Fields(1).Value
' Rst.MoveNext

'Wend
'Rst.MoveFirst

'Debug.Print Rst.RecordCount 'nombre d'enregistrement
'Debug.Print Rst.Fields.Count 'nombre de colonnes dans la requete
''Recupérer le recordset dans un tableau
'Dim Tableau() As Variant
'Tableau = Rst.GetRows

Base.Range("a2").CopyFromRecordset Rst 'copier le recorset dans une feuille

Rst.Close
Conn.Close

End Sub>

Merci beaucoup en avance

Rechercher des sujets similaires à "contenant finbase adodb connection"