Bonjour,
Si tu publiais le code qui FONCTIONNE ? (puisque le dernier plante ?)
Bonjour,
Si tu publiais le code qui FONCTIONNE ? (puisque le dernier plante ?)
La boucle que j'ai
écrite ne fonctionne pas correctement
qui viens modifié le code initial
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 'Boucle de recherche HT i = 0 Do 'Incrémente le compteur. i = i + 1 If Cells(i, 6) = "HT" Then 'Adresse de la cellule contenant la donnée à récupérer suit à recherche Cellule = "F" & [i].Value Exit Do End If Loop
voici le code itégral :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2Cellule = "F29:F29"
Pouvez vous m'aider à éliminer les erreur!
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 Sub test2() Dim Source As ADODB.Connection Dim Rst As ADODB.Recordset Dim ADOCommand As ADODB.Command Dim Fichier As String, Cellule As String, Feuille As String 'Boucle de recherche HT i = 0 Do 'Incrémente le compteur. i = i + 1 If Cells(i, 6) = "HT" Then 'Adresse de la cellule contenant la donnée à récupérer suit à recherche Cellule = "F" & [i].Value Exit Do End If Loop 'Adresse de la cellule contenant la donnée à récupérer 'Cellule = "F29:F29" 'Pour une plage de cellules, utilisez: 'Cellule = "A4:C10" Feuille = "Devis-Client$" 'n'oubliez pas d'ajouter $ au nom de la feuille. 'Chemin complet du classeur fermé Fichier = [A1].Value & [A2].Value Set Source = New ADODB.Connection Source.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & Fichier & ";Extended Properties=""Excel 8.0;HDR=No;"";" Set ADOCommand = New ADODB.Command With ADOCommand .ActiveConnection = Source .CommandText = "SELECT * FROM [" & Feuille & Cellule & "]" End With Set Rst = New ADODB.Recordset Rst.Open ADOCommand, , adOpenKeyset, adLockOptimistic Set Rst = Source.Execute("[" & Feuille & Cellule & "]") Range("C2").CopyFromRecordset Rst Rst.Close Source.Close Set Source = Nothing Set Rst = Nothing Set ADOCommand = Nothing 'ligne = 2 'Cells(ligne, 2) = "=RECHERCHEV("H.T";'" & [A1].Value & [A2].Value & "'!HT;3)" End Sub
Modifie déjà ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Cellule = Range("F" & [i]).Value
J'ai essayé de comprendre ce que faisait le code pour insèrer ma boucle au bonne emplacement et pour controler la bonne valeur
Mais je ne sis visiblement pas doué
Ca ne fait pas ce que je veux
A un moment j'ai quasi reproduit la feuille dont je cherche pourtant qu'un valeur
j'ai donc déplacé la boucle en essayant de controlé la valeur de "Rst"
j'ai une erreur me disant
"type incompatible"
est il si difficile de chercher la valeur sur la colonne d'a coté du mot "H.T"
Ou sais moi qui est vraiment nul!!!!!!
je vraiment envie d'être violent avec ce PC de merde!
Si quelqu'un pouvais m'aider ce serai sympa et cela sauverai le vie d'un PC en plus!
voici le code:
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 Sub test2() Dim Source As ADODB.Connection Dim Rst As ADODB.Recordset Dim ADOCommand As ADODB.Command Dim Fichier As String, Cellule As String, Feuille As String Dim i As Integer Dim trouve As Integer 'Adresse de la cellule contenant la donnée à récupérer 'Cellule = "F29:F29" 'Pour une plage de cellules, utilisez: 'Cellule = "A4:C10" Feuille = "Devis-Client$" 'n'oubliez pas d'ajouter $ au nom de la feuille. 'Chemin complet du classeur fermé Fichier = [A1].Value & [A2].Value Set Source = New ADODB.Connection Source.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & Fichier & ";Extended Properties=""Excel 8.0;HDR=No;"";" Set ADOCommand = New ADODB.Command With ADOCommand .ActiveConnection = Source .CommandText = "SELECT * FROM [" & Feuille & Cellule & "]" End With Set Rst = New ADODB.Recordset Rst.Open ADOCommand, , adOpenKeyset, adLockOptimistic i = 0 Do Do While i < 3000 i = i + 1 Cellule = "F" & i Set Rst = Source.Execute("[" & Feuille & Cellule & "]") If Rst = "H.T" Then trouve = True Exit Do End If Loop 'Quitte la boucle si la variable à la valeur True. Loop Until trouve = True Or i = 3000 Range("C2").CopyFromRecordset Rst Rst.Close Source.Close Set Source = Nothing Set Rst = Nothing Set ADOCommand = Nothing 'ligne = 2 'Cells(ligne, 2) = "=RECHERCHEV("H.T";'" & [A1].Value & [A2].Value & "'!HT;3)" End Sub
Si tu lisais les réponses qu'on te fait...
Au risque de me répéter, remplace :
par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Cellule = "F" & i
Je ne suis pas sûr que ce soit la seule erreur, mais tant que tu ne prendras la peine de corriger, je ne vois pourquoi je passerais plus de temps sur ton code.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Cellule = Range("F" & [i]).Value
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager