Amélioration d'un code VBA

Résolu/Fermé
plastickman Messages postés 64 Date d'inscription mercredi 5 décembre 2007 Statut Membre Dernière intervention 8 février 2012 - 28 oct. 2011 à 10:45
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 1 nov. 2011 à 07:18
Bonjour à tous,
A vrai dire j'ai deux questions:

1/
J'utilise le code suivant:

Sub ExtractRefresh()
Dim ScanFic As Office.FileSearch
Dim NomFic As Variant
Dim Nbr As Long
Set ScanFic = Application.FileSearch
With ScanFic
.NewSearch
.LookIn = ActiveWorkbook.Path
.SearchSubFolders = True
.Filename = xls
.MatchTextExactly = True

Nbr = .Execute
For Each NomFic In .FoundFiles
If Right(NomFic, 13) = "resultats.xls" Then GoTo suite
Workbooks.Open Filename:=NomFic
With Workbooks("resultats.xls").Sheets("diagnostics")
.Range("D65536").End(xlUp).Offset(1, 0).Value = ActiveWorkbook.Sheets("Renseignements").Range("D17").Value
End With
ActiveWorkbook.Save
ActiveWorkbook.Close
suite:
Next
End With
End Sub


J'aimerais que lors du déroulement, si la cellule D17 de ma feuille "Renseignements" est vide, la valeur importée dans mon document soit 0 et non "" ce qui a pour effet de décaler toutes mes lignes.

2/
J'ai des noms de fichiers.xls dans la colonne A (qui sont tous dans un même répertoire nommé "Résultat"). Dans la colonne B, on trouve "OUI" ou "NON".
Je souhaiterais réaliser un code qui me permettrait, pour chaque fichier ayant la mention "OUI" devant, d'ouvrir ce dernier et d'imprimer la feuille "Facture" de ce dernier.

Merci d'avance à ceux qui prendront le temps de m'aider.

A voir également:

5 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
28 oct. 2011 à 11:20
Bonjour
pour le 1:

le principe
Range("B1") = IIf(IsEmpty(Range("A1")), 0, Range("A1"))



Remarque: attention si tu bascules un jour sur XL>=2007, filesearch n'est + valable; voir:
https://silkyroad.developpez.com/vba/classefilesearch/
1
plastickman Messages postés 64 Date d'inscription mercredi 5 décembre 2007 Statut Membre Dernière intervention 8 février 2012 6
31 oct. 2011 à 09:45
Bonjour,
Et tout d'abord merci de ton aide et pour l'info sur "filesearch", je ne savais pas.
Je suis tout à fait d'accord avec le principe, mais je n'arrive pas à l'intégrer à ma ligne:

.Range("D65536").End(xlUp).Offset(1, 0).Value = ActiveWorkbook.Sheets("Renseignements").Range("D17").Value


J'ai toujours un message d'erreur m'indiquant qu'il veut une valeur.

Et pour ma question 2, as-tu une petite idée à me soumettre?
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
31 oct. 2011 à 11:28
bonjour,

quel est le rapport entre question 1 et 2?
0
plastickman Messages postés 64 Date d'inscription mercredi 5 décembre 2007 Statut Membre Dernière intervention 8 février 2012 6
31 oct. 2011 à 22:19
Bonsoir,
Il n'y a pas vraiment de rapport, c'est juste que je travaille beaucoup avec le même classeur, et ce sont deux fonctions dont j'ai besoin, l'une pour extraire les numéros factures impayées, et l'autre pour éditer des relances.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
1 nov. 2011 à 07:18
Bonjour,

C'est bien ce que je craignais: dans le 2 tu dis que tout est dans le m^me dossier et dans le code du 1 tu cherches dans les sous dossiers:
.LookIn = ActiveWorkbook.Path
.SearchSubFolders = True

alors je perd confiance...

D'ailleurs, ce n'est pas un hasard si MS a supprimé "filesearch" particulièrement rigide et compliqué...
0