Amélioration d'un code VBA

Résolu
plastickman Messages postés 64 Date d'inscription   Statut Membre Dernière intervention   -  
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   -
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 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 313
 
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   Statut Membre Dernière intervention   6
 
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 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 313
 
bonjour,

quel est le rapport entre question 1 et 2?
0
plastickman Messages postés 64 Date d'inscription   Statut Membre Dernière intervention   6
 
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 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 313
 
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