Explorer tableur & Recherche [.Find]
Bien le Bonjour,
Contexte :
Je suis actuellement en train de coder un petit soft qui permettera de comparer les valeurs de deux fichiers Excel (taille du fichier et valeurs dynamiques).
Je viens vers vous pour une partie bien précise de mon code. Il s'agit d'une boucle qui va parcourir ligne par ligne mon fichier en cherchant le mot "Fournisseur". Si il trouve, je recupere certaines valeurs et les mets dans un tableau (tabSAP) et je continue ma recherche jusqu'à la prochaine occurence de mot "Fournisseur". Et ainsi de suite.
Probleme :
Je tente désespérement de faire fonctionner la ligne de code surligné ...
Solutions :
J'ai deja pas mal parcouru de tuto et cours sur le site pour mon probleme, s'il vous plait ne me redirigé par vers un tuto mais expliquer moi mes erreurs et corrigez les si possibles ...
merci de votre comprhension
Code :
Dim DernLigne As Long
Dim tabSAP()
Dim frs As Integer
Dim i2 As Integer
Dim parcourfile As Range
Dim dernlignsap As Integer
dernlignsap = Range("A1").End(xlDown).Row
ReDim tabSAP(dernlignsap, 2)
Workbooks.OpenText Filename:="C:\Users\[.....]\Documents\ComparateurSOX\propo.txt", _
DataType:=xlDelimited, Tab:=True
i2 = 1
frs = 0
DernLigne = ActiveSheet.UsedRange.Rows.Count
Set parcourfile = Range("A1:A" & i2)
For i2 = 1 To DernLigne
If parcourfile.Find(what:="Fournisseur").Select = True Then
frs = frs + 1
tabSAP(frs, 0) = Range("A" & i2 + 9)
tabSAP(frs, 1) = Range("A" & i2 + 11)
Else
MsgBox "pas trouvé"
End If
Next i2
Complement :
Si toutefois vous avez besoin d'un complement d'information n'hesitez pas à me demander (Je ne pourrais malheureusement pas publier les fichiers en questions ..).
Bonjour et bienvenue sur le forum
Sans ton fichier, c'est délicat;;;
Essaie tout de même ce code :
Sub essai()
Dim DernLigne As Long
Dim tabSAP()
Dim frs As Integer
Dim i2 As Integer
Dim parcourfile As Range
Dim dernlignsap As Integer
Dim cell As Range
dernlignsap = Range("A1").End(xlDown).Row
ReDim tabSAP(dernlignsap, 2)
Workbooks.OpenText Filename:="C:\Users\[.....]\Documents\ComparateurSOX\propo.txt", _
DataType:=xlDelimited, Tab:=True
i2 = 1
frs = 0
DernLigne = ActiveSheet.UsedRange.Rows.Count
Set parcourfile = Range("A1:A" & DernLigne)
For i2 = 1 To DernLigne
Set cell = parcourfile.Find(what:="Fournisseur")
If Not cell Is Nothing Then
'If parcourfile.Find(what:="Fournisseur") = True Then
frs = frs + 1
tabSAP(frs, 0) = Range("A" & i2 + 9)
tabSAP(frs, 1) = Range("A" & i2 + 11)
Else
MsgBox "pas trouvé"
End If
Next i2
End SubHello,
Je comprends pas ton .select = true.
Perso pour chercher un seul mots dans une colonne je fais.
if cells(i2,colonne).value = "fournisseur" thensinon pour un find j'utilise ce code, du site. http://www.commentcamarche.net/faq/36886-vba-recherche-de-donnees-la-methode-find
Option Explicit
Sub Cherche()
'déclaration des variables :
Dim Trouve As Range, PlageDeRecherche As Range
Dim Valeur_Cherchee As String, AdresseTrouvee As String
'********* à adapter ***********
'affectation de valeurs aux variables :
'on cherche le mot "Trouve"
Valeur_Cherchee = "Trouve"
'dans la première colonne de la feuille active
Set PlageDeRecherche = ActiveSheet.Columns(1)
'*******************************
'méthode find, ici on cherche la valeur exacte (LookAt:=xlWhole)
Set Trouve = PlageDeRecherche.Cells.Find(what:=Valeur_Cherchee, LookAt:=xlWhole)
'traitement de l'erreur possible : Si on ne trouve rien :
If Trouve Is Nothing Then
'ici, traitement pour le cas où la valeur n'est pas trouvée
AdresseTrouvee = Valeur_Cherchee & " n'est pas présent dans " & PlageDeRecherche.Address
Else
'ici, traitement pour le cas où la valeur est trouvée
AdresseTrouvee = Trouve.Address
End If
MsgBox AdresseTrouvee
'vidage des variables
Set PlageDeRecherche = Nothing
Set Trouve = Nothing
End SubBonjour,
A mon avis, il serait bon de citer des procédures complètes [une procédure Sub commence par Sub et se termine par End Sub...], si les déclarations manquent on ne peut être sûr qu'elles soient complètes.
Accessoirement, indenter correctement son code faciliterait la lecture...
J'observe un grand nombre d'expression dépourvue de qualificateurs d'objet (Range ne référant explicitement à aucune feuille, donc feuille active par défaut, ce qui ne fournit pas un code très précis...)
Au passage un Select qui n'a rien à faire dans un code qui se respecte.
Une boucle bizarrement initiée ! qui inclut une recherche avec Find [mélange de genres un peu confus], d'autant que Find ne renvoie pas une valeur booléenne mais un objet Range !!!! Et qui plus est, on recherche dans une seule cellule.
En l'absence de fichiers, inutile d'aller plus loin...
Un grand merci à gmb pour son code beaucoup plus optimisé et jolie que le mien ! (je te doit une biere si tu passe par Grenoble
Merci à nonesofar13 pour ce cours que je vais comprendre et appliquer prochainement !
et troisieme merci à MFerrand pour ces critiques constructives
Seulement mon probleme ne s'arrete pas la ... mais pour que vous puissiez m'aider d'avantage, il vous faut les docs associés ... je vais essayer de reproduire la mise en forme de chacun avec du blabla et les publiers.
Pour ma defense, je debute et galere pas mal en VBA et en algo en général...
ps : je ne clos pas et vous fournis les docs au plus vite !
Ca y est j'ai les docs.
Il y en a un dont toutes les infos sont en colonne A et seulement A, c'est normal car c'est un .txt a la base.
J'ai mis un word en PJ pour vous expliquer succintement le programme à terme.
Voici mon code complet :
Soyez indulgent, ca va surment vous piquer les yeux ...
Excel n'est pas content des lignes de codes que j'ai surligné ...
Option Explicit
Sub main()
Tableaux
End Sub
'**********************************************************************************************************************************
Sub Tableaux()
'**********************************************************************************************************************************
Workbooks.Open Filename:="C:\Users\[.....]\Documents\ComparateurSOX\" & "doc_exemple1" & ".xlsx"
Dim tabBANK()
Dim derniere_ligne As Integer
derniere_ligne = Range("A1").End(xlDown).Row
ReDim tabBANK(derniere_ligne, 2)
'------------------------------------------------------
Dim tabIG(2)
tabIG(1) = Range("A3")
tabIG(2) = Range("B8")
'**********************************************************************************************************************************
'Bloc definition nombre de lignes et incrémentation nombre d'operations
Dim nbr_lignes As Integer
Workbooks("doc_exemple1").Activate
nbr_lignes = ActiveSheet.UsedRange.Rows.Count
nbr_lignes = nbr_lignes - 12
tabIG(0) = "Nombre d'opérations banque : " & nbr_lignes
ReDim tabBANK(nbr_lignes - 1, 2)
'**********************************************************************************************************************************
'Bloc de récup. réference banque
tabIG(1) = Mid(tabIG(1), 7, 7) 'place le curseur a l'endroit voulu
tabIG(1) = "Numero de reference : " & tabIG(1)
'**********************************************************************************************************************************
'Bloc de recup. prix total
tabIG(2) = Replace(tabIG(2), " ", "") 'Enleve les espcaes
'**********************************************************************************************************************************
'Rempli le tabBANK()
Dim i As Integer
For i = 0 To nbr_lignes - 1
tabBANK(i, 0) = Range("A" & i + 13)
tabBANK(i, 1) = Range("C" & i + 13)
tabBANK(i, 2) = Range("D" & i + 13)
tabBANK(i, 1) = Replace(tabBANK(i, 1), " ", "")
Next i
'**********************************************************************************************************************************
'bloc création tableau SAP et remplissage
Dim DernLigne As Long
Dim tabSAP()
Dim frs As Integer
Dim i2 As Integer
Dim parcourfile As Range
Dim dernlignsap As Integer
Dim cell As Range
dernlignsap = Range("A1").End(xlDown).Row
ReDim tabSAP(dernlignsap, 2)
Workbooks.OpenText Filename:="C:\Users\[....]\Documents\ComparateurSOX\propo.txt", _
DataType:=xlDelimited, Tab:=True
i2 = 1
frs = 0
DernLigne = ActiveSheet.UsedRange.Rows.Count
Set parcourfile = Range("A1:A" & DernLigne)
For i2 = 1 To DernLigne
Set cell = parcourfile.Find(what:="Fournisseur")
If Not cell Is Nothing Then
'If parcourfile.Find(what:="Fournisseur") = True Then
frs = frs + 1
tabSAP(frs, 0) = Range("A" & i2)
tabSAP(frs, 1) = Range("A" & i2 + 11)
MsgBox tabSAP(frs, 0)
Else
MsgBox "pas trouvé"
End If
Next i2
'******************************************************************************************************************************
'**********************************************************************************************************************************
'Creation du fichier word et impression
Dim WordObj As Object
On Error Resume Next
Set WordObj = CreateObject("Word.Application.8")
'Pour afficher Word
WordObj.Visible = True
'Ajoute un document
WordObj.Documents.Add
With WordObj.Selection
.TypeParagraph
.TypeText Text:="RAPPORT DE COMPARASION" & Chr(10) & Format(Date, "dddd d mmmm yyyy")
.TypeParagraph
.TypeText Text:="Rapport de comparaison de fichier BANQUE - SAP"
.TypeParagraph
.TypeText Text:="La signature de ce rapport par le résponsable blabla de Mon entreprise fera office de confirmation de la véracité du contenu des fichiers SAP et BANQUE"
.TypeParagraph
.TypeText Text:="Les informations suivantes ont été prouvées par le biais d'un logiciel de comparaison. Toutes erreurs révélées par le logiciel ont été automatiquement retranscrites ci-dessous. "
.TypeParagraph
.TypeText Text:="Pour toute demande de précision ou d'information, veuillez contacter le debutant qui a codé ca au 08.88.88.88.88 ou par mail : blabla.blublu@monentreprise.com"
.TypeParagraph
.TypeParagraph
.TypeText Text:="RESULTATS OBTENUS LORS DE LA COMPARASION"
'Rapport word, résultat comparaison prix totaux
.TypeParagraph
.TypeParagraph
.TypeParagraph
.TypeParagraph
.TypeParagraph
.TypeParagraph
.TypeParagraph
.TypeParagraph
.TypeParagraph
.TypeParagraph
.TypeParagraph
.TypeParagraph
.TypeParagraph
.TypeParagraph
.TypeText Text:="Signature du responsable suivis de la mention ''lu et approuvé''"
.TypeParagraph
End With
'pour imprimer le document
'WordObj.PrintOut
'Set WordObj = Nothing
'End Function
End Sub
Bon ! Au premier survol j'ai trouvé le cheminement tortueux...
Au deuxième, je n'ai pas eu l'impression que c'était fini, et que l'objet de l'opération n'était pas finalisé. En tout cas, il ne figure pas dans le code...
Au troisième, je me suis perdu en conjectures sur les informations à prélever dans la 2e partie du code (tableau SAP)...
Il conviendrait donc d'élucider ce point dans l'immédiat.
Ahah oui ca ne m'etonne absolument pas car il l'est !
Non non le programme n'est pas finalisé, il me reste encore à comparer les tableaux pour le word ainsi qu'extraire les données souhaitées du doc_exemple2...
Pour ce qui est du troisieme point dont tu me fait part, j'ai surligné en dessous ce que je veux recupérer dans un "bloc fournisseur" pour ensuite y placer dans mon tabSAP. La deuxieme partie du code est erronné, ces deux lignes sont fausses :
(Le "+11" ne sert a rien)
A terme, mon but pour ce bout de code est de remplir mon tabSAP avec les bonnes infos. Mais je ne parviens pas à faire une boucle me permettant de parcourir chaque occurences du mot "fournisseur" puis de récup. les infos utiles qui suives ce mot clé.
--Fournisseur 0000060261------------------------------------------------------------------Coordonnées bancaires---------------------
| Nom de l'entreprise | | blablablalblalblalbla |
|Entreprise1 | | Code SWIFT : HDGSJDIKFI |
| 22 place de blabla | | IBAN: FR89112233224455665577889988 |
| 578451 banlieu CEDEX | | Code banque : 87546754727 |
| FRANCE | | N° compte : 0004215767 |
| F110575212 BLABB BLA Q Virement domestique Entreprise1 , 5000- EUR |
Bonjour,
Je me doutais un peu de la nature des infos à extraire, analogues à la première extraction... Pour la deuxième (IBAN) pas de problème, elle n'apparaissait qu'une fois, pour la première elle apparaît plusieurs fois mais pas vraiment de difficulté non plus, c'était surtout la 3e dont je voulais confirmation de l'emplacement d'extraction...
Apparemment, il semble que cette ligne (7 lignes après 'Fournisseur') n'apparaît que s'il y a une opération, je teste donc sa présence pour extraction (à confirmer, on aurait pu tester aussi sur la présence de l''IBAN').
Examen du code (deux première parties) :
Sub Tableaux()
Dim tabBANK(), tabIG(2), tabSAP(), temp, dL%, i%, frs%Les déclarations ! Je n'ai pas d'objection de principe à un listage des déclarations de variables sur autant de lignes que de variables, sinon que je trouve que ce n'est pas vraiment utile d'allonger ainsi la procédure sans renforcer sa lisibilité. Une ligne me paraît suffisante dans le cas général, 2 ou 3 si elles sont nombreuses en les répartissant par catégories...
J'ajoute que je dépasse aussi rarement que possible 3 caractères pour un nom de variable, ce qui assorti de l'utilisation du caractère de déclaration de type permet le plus souvent de limiter à une ligne de déclaration.
Par contre, j'ai des objections aux déclaration éparpillées dans la procédure !
Déclarer des variables distinctes, utilisées tour à tour dans le code, permet parfois d'y voir plus clair et d'éviter des confusions, cependant dans bien des cas la même variable peut être utilisée sur différentes parties du code sans que cela nuise. Exemple : dL pour y consigner la dernière ligne d'un tableau que l'on va parcourir, elle peut être utilisée successivement sur plusieurs tableaux sans possibilité d'erreur, ce qui rend inutile la déclaration de plusieurs variables qui ne seront jamais utilisées en même temps...
Toujours dans les remarques générales, la règle consistant à indenter systématiquement le code me paraît indispensable à respecter pour pouvoir lire le code dans de bonnes conditions (selon mes estimations, on met environ 4 fois plus de temps à lire du code mal indenté ! par lire, j'entends en interprétant immédiatement sans erreur l'action exécutée par le code lu).
Enfin, pour éviter d'y revenir, la présence de qualificateurs d'objets est indispensable à l'écriture d'un code précis, qui ne génèrera pas de problème ultérieur dès lors que le contexte d'utilisation se modifie légèrement... Doter toute expression d'un qualificateur est de plus ce qui permet d'éliminer tout Select ou Activate qui sont autant d'opérations superflues et parasites demandées à VBA (toujours présentes dans du code enregistrée, du fait qu'il ne fait qu'enregistrer des opérations accomplies manuellement...)
Première partie :
'Tableau BANK
With Workbooks.Open("C:\Users\[.....]\Documents\ComparateurSOX\" & "doc_exemple1.xlsx").Worksheets(1)
dL = .Range("A" & .Rows.Count).End(xlUp).Row
ReDim tabBANK(dL - 13, 2)
tabIG(0) = "Nombre d'opérations banque : " & dL - 12
tabIG(1) = "Numero de reference : " & Mid(.Range("A3"), 7, 7)
tabIG(2) = .Range("B8").Value2
For i = 13 To dL
tabBANK(i - 13, 0) = .Range("A" & i)
tabBANK(i - 13, 1) = Replace(.Range("C" & i), " ", "")
tabBANK(i - 13, 2) = .Range("D" & i)
Next i
End WithIl y avait un cafouillage dans l'évaluation de la dernière ligne... L'évaluation avec End(xlDown) implique que l'on ne va pas rencontrer de vide avant la fin, et ce n'était pas le cas ! (Sans conséquence, du fait de la non utilisation de cette évaluation au profit d'une seconde calculée sur UsedRange). L'utilisation de UsedRange ne peut pas être très recommandée pour cela car l'on n'est jamais assuré de son extension, dépendantes des utilisations antérieures (l'effacement ne réduit pas l'extension de cette plage...)
Pas de remarque particulière sur cette partie du code, sinon que j'ai ramené à une ligne des affectations faites en utilisant 2 ou 3 lignes (le résultat conserve des lignes de longueur réduite, lisible sans difficulté de compréhension...)
Un point m'avait interrogé : l'affectation de tabIG(2) en supprimant les espaces ? Or dans le fichier modèle, il s'agit d'une valeur numérique ! Au demeurant sans format de cellule particulier. Je n'ai donc pas reconduit la suppression d'espaces (opération relative à du texte) mais par précaution utilisé la propriété Value2 de l'objet Range (dont la particularité est de prendre en compte la valeur en éliminant la spécificité des valeurs dates ou monétaires).
(A suivre)
Deuxième partie :
'Tableau SAP
With Workbooks.OpenText("C:\Users\[....]\Documents\ComparateurSOX\propo.txt", _
DataType:=xlDelimited, Tab:=True).Worksheets(1)
dL = .Range("A" & .Rows.Count).End(xlUp).Row
For i = 1 To dL
If .Cells(i, 1) Like "*Fournisseur*" Then
If .Cells(i + 7, 1) Like "*Virement*" Then
ReDim Preserve tabSAP(2, frs)
temp = Split(.Cells(i + 1, 1), "|"): tabSAP(0, frs) = Trim(temp(1))
temp = Split(.Cells(i + 3, 1), "|"): tabSAP(1, frs) = Trim(Replace(temp(3), "IBAN:", ""))
temp = Split(.Cells(i + 7, 1), ","): tabSAP(2, frs) = Val(temp(1))
frs = frs + 1: i = i + 7
End If
End If
Next i
End WithJe n'ai pas touché à l'ouverture du fichier texte (hormis la mise sous instruction With... End With, comme dans la première partie), cependant je ferai remarquer que l'indication d'un caractère de tabulation non prolongée la définition dudit caractère pour répartir le texte en colonnes, n'est de ce fait pas bien utile. Tout le texte est en colonne A... Le code qui suit correspond au modèle fourni...
Il y avait un sérieux flou dans l'utilisation des boucles et l'utilisation de Find n'était pas vraiment appropriée (bien que possible mais pas de la façon dont elle était faite...). Ici on reste sur une boucle classique et on cherche la présence de 'Fournisseur' en A.
Lorsque l'on trouve 'Fournisseur' : on vérifie la présence de 'Virement' 7 lignes plus bas (terme qui ne se retrouve pas sur d'autres lignes). Si ce n'est pas le cas, il n'y a pas d'opération et la boucle se poursuit sans intervention.
Si c'est le cas : on redimensionne le tableau tabSAP en préservant les données qui y ont déjà été consignées 3 "colonnes" (0 à 2) et une "ligne" de plus (définie par frs, à la première occurrence frs a la valeur 0).
L'inversion "lignes" - "colonnes" (la dimension variable "ligne" doit être positionnée en 2e dimension du tableau pour pouvoir varier) fait que l'on obtiendra à la fin un tableau transposé (par rapport à tabBANK).
On splitte les valeurs des lignes contenant des informations à prélever (i+1, i+3, i+7). Pour les deux premiers on splitte sur le caractère "|", pour le 3e sur la virgule que contient cette ligne. Trim élimine les espaces. On élimine 'IBAN:' de la 2e valeur prélevée, et on utilise Val pour recueillir la 3e valeur (numérique).
On incrémente alors frs, et on shunte la partie du fichier ayant donnée lieu à prélèvement.
Tout repose sur la régularité de disposition des informations dans le fichier texte...
La suite devrait être une comparaison des deux tableaux extraits. Il faut définir quel type de comparaison doit être effectué.
NB- Je te signale tout de suite que je n'entends pas intervenir sur l'élaboration du fichier Word (pas trop dans mes "trucs"
Cordialement.
Bonjour,
Wahoo ! ... un grand grand merci
A ce niveau la, je doute que "merci" suffise ... en tout cas c'est pas une biere que je te doit mais un fût entier ...
J'imprime immédiatement ton texte ... que dit-je ... ton cours pour m'en impregner !
Juste avant de clore se sujet que je n'oublierai pas, il y a une ligne de code qui chagrine VB ...
Quand j'execute mon programme, un pop-up d'erreur de compilation me dit "Fonction ou variable attendu"
voici ce qui est surligné au moment de l'erreur :
Sub Tableaux()
With Workbooks.OpenText("C:\Users\[......]\Documents\ComparateurSOX\propo.txt", _
DataType:=xlDelimited, Tab:=True).Worksheets(1)Navré d'abuser de ton temps et de ton energie ...
Cordialement,
De rien ! Je n'en suis pas surpris...
Remplace par :
Workbooks.OpenText "C:\Users\rugeth\Documents\ComparateurSOX\propo.txt"
With ActiveWorkbook.Worksheets(1)Encore un micro soucis qui me prendrai 3heure à resoudre ...
Erreur numero 9 : l'indice n'appartient pas à la selection :
'Tableau SAP
Workbooks.OpenText "C:\Users\[....]\Documents\ComparateurSOX\propo.txt"
With ActiveWorkbook.Worksheets(1)
dL = .Range("A" & .Rows.Count).End(xlUp).Row
For i = 1 To dL
If .Cells(i, 1) Like "*Fournisseur*" Then
If .Cells(i + 7, 1) Like "*Virement*" Then
ReDim Preserve tabSAP(2, frs)
temp = Split(.Cells(i + 1, 1), "|"): tabSAP(0, frs) = Trim(temp(1))
temp = Split(.Cells(i + 3, 1), "|"): tabSAP(1, frs) = Trim(Replace(temp(3), "IBAN:", ""))
temp = Split(.Cells(i + 7, 1), ","): tabSAP(2, frs) = val(temp(1))
frs = frs + 1: i = i + 7
End If
End If
Next i
End WithComme je l'ai dit, tout repose sur la régularité des mentions du fichier texte...
Ici, s'agissant de la dernière valeur (numérique), dont on a prétesté l'existence en vérifiant que la ligne contient 'Virement', l'erreur laisse penser que la virgule utilisée comme séparateur manque.
Lors de l'erreur, après clic sur Débogage, un survol sur les noms de variables de la ligne surlignée indique les valeurs atteintes, notamment par frs. C'est un indicateur pour essayer de retrouver la ligne en cause et vérifier si l'erreur provient de là.
frs correspond aux fournisseurs traités (en partant de 0) et les fournisseur sans ligne 'Virement' ne sont pas traités.
Bon courage
Effectivement, le montant de cette transaction tombe rond, contrairement à tout les autres
Merci pour tout et a bientot !
Peux-tu me reproduire la ligne de texte concernée ?
--Fournisseur 0000104098------------------------------------------------------------------Coordonnées bancaires---------------------
| entreprise concerné | | la banque |
| Agence blabla | | Code SWIFT : HFJDHHSHSHSH |
| Rue des brouettes | | IBAN: FR89545485545545444455668899 |
| 87586 banlieu | | Code banque : 7854698952 |
| FRANCE | | N° compte : 0005487556468 |
-----------------------------------------------------------------------------------------------------------------------------------|
| F110000009 HGT JIU Q Virement domestique ca va ca viens 6384- EUR |
-----------------------------------------------------------------------------------------------------------------------------------|
| * F1100000 |
| 6384- 0,00 6384- EUR |
Effectivement, la virgule manque après ca va ca vient.
On peut donc : soit modifier le séparateur et prendre le tiret (il semble qu'il soit constant et qu'il n'y en ait qu'un) puis extraire le nombre de l'élément 0 par la fin. Un peu tordu mais c'est faisable.
Il faudra en tout cas une gestion d'erreur pour que la procédure ne bloque pas sur une telle anomalie. On peut maintenir le type d'extraction actuel et en cas d'erreur :
- on renvoie au mode de recherche que j'ai indiqué ci-dessus
- éventuellement on peut en enchaîner d'autres en cas d'échec
- et si on n'arrive à rien on renvoie "non trouvé" ou un autre mention...
Cordialement.
Sur le principe je suis totalement d'accord avec tes propos !
mais dans la pratique, j'ai essayé un "On Error GoTo" mais n'est pas reussi à faire marcher cette "fonction"...
Pour calculer le montant total des OPs du "Doc_exemple2" j'ai voulu tenter une boucle avec "Ubound" mais le resultat n'etait pas concluant ..
je crois que j'ai un serieux probleme avec les boucles !
J'ai essayé ca pour comparer mes deux tableau tabBANK et tabSAP, pas d'erreur d'exec mais je pense que le compte rendu n'est pas vrai
Dim Cpt, J, K, ch1 As Long
Cpt = -1
For J = 1 To UBound(tabBANK)
For K = 0 To UBound(tabSAP)
If tabBANK(J) = tabSAP(K) Then
Cpt = Cpt + 1
.TypeText Text:="Résultat : Identités fournisseurs SAP & BANQUE identiques"
.TypeParagraph
Else
.TypeParagraph
.TypeText Text:="Résultat : ERREUR, Identités fournisseur SAP & BANQUE pas identiques"
.TypeParagraph
End If
Next K
Next JBonjour,
On pourra voir le problème de la gestion d'erreur ensuite... Pour la comparaison, il faudrait m'expliquer précisément ce que tu compares entre les deux tableaux et les conclusions à tirer de la comparaison, de façon à voir comment l'organiser et si un tri préalable ne devrait pas être effectué...
Bonne journée.