Comparaison contenu ligne et fichiers dans un dossier

Bonjour à tous,

Je travaille sur des fichiers excel contenant des gencod (code barre à 13 chiffres).

Dans un dossier de mon ordinateur, j'ai des fichiers images nommés par gencod.

Est-il possible avec une formule de colorer automatiquement les cellules dont le gencod correspond à un fichier présent dans un dossier choisi svp ?

Il s'agit de me faciliter la tâche car parfois j'ai plusieurs centaines de lignes, et vérifier si j'ai bien les visuels de chaque ligne me prend énormément de temps.

J'espère que ma demande est compréhensible

Merci d'avance !

MaZ a écrit :

Bonjour à tous,

Je travaille sur des fichiers excel contenant des gencod (code barre à 13 chiffres).

Dans un dossier de mon ordinateur, j'ai des fichiers images nommés par gencod.

Est-il possible avec une formule de colorer automatiquement les cellules dont le gencod correspond à un fichier présent dans un dossier choisi svp ?

Il s'agit de me faciliter la tâche car parfois j'ai plusieurs centaines de lignes, et vérifier si j'ai bien les visuels de chaque ligne me prend énormément de temps.

J'espère que ma demande est compréhensible

Merci d'avance !

Bonjour,

pas d'exemple ?

ps: tu as bien fait de préciser que tu es sur Mac

P.

Un exemple, dans mon fichier Excel, j'ai 4 lignes :

3375537181346

3375530299789

3375537196593

3375537196661

Dans un dossier présent dans mon ordinateur, j'ai 3 fichiers images qui sont nommés

3375537181346.jpg

3375530299789.jpg

3375537196593.jpg

Je souhaite que mes cellules se colorient dans mon fichier Excel, de sorte à ce que je puisse voir si j'ai bien tous les visuels des gencod présents dans mon fichier ou pas.

Donc dans l'exemple, il n'y aura que les 3 premières lignes qui seront coloriées (fond rouge clair par exemple)

Est-ce plus clair ?

Bonjour,

Pas de solution svp ?

Est-ce réalisable ou pas ?

bonjour,

une proposition

Sub aargh()
    chemin = "c:\"    ' à adapter répertoire dans lequel se trouvent les images
    With ActiveSheet
        i = 1    'première ligne
        c = "A"    ' colonne dans laquelle se trouvent les gencods
        While .Cells(i, c) <> ""
            f = Dir(chemin & .Cells(i, c) & ".jpg")
            If f <> "" Then .Cells(i, c).Interior.Color = vbGreen
            i = i + 1
        Wend
    End With
End Sub

Merci pour ton aide, malheureusement Excel me dit "Périphérique non disponible"

En "adresse" j'ai mis : /Users/gmaz/Desktop/SAUVEGARDE/dossier/FournisseursSansTri/Wirquin/Visuels/bd

bonjour,

ajoute un "/" à la fin de la variable chemin

Pareil Même erreur

Bonjour,

le problème est dans ce que tu as mis dans la variable chemin, chemin qui est spécifique à ton ordinateur. vérifie le chemin, je ne peux pas t'aider davantage. Peut-être quelqu'un avec une connaissance de Excel sur MAC pourra trouver l'erreur ?

Oui je m'en doute, j'ai bien vérifier mon chemin, il est ok (j'ai utilisé toutes les techniques différentes pour avoir le chemin sur Mac)

J'ai déplacé mon dossier dans "Documents", même erreur

Je ne comprends pas pourquoi...

Bonjour

sous mac pour récupérer le chemin du dossier mes documents normalement c'est :

     MyPath = MacScript("return (path to documents folder) as String")
            'MyPath = "the path to documents folder" 

le séprateur entre les dossiers sous mac n'est pas "\" mais le ":"

une petite ressouce pour des insctructions mac

https://www.rondebruin.nl/mac/mac007.htm

mais de mémoire la fonction DIR n'existe pas sous mac

Fred

Bonjour Fred,

Bien vu ... c'est bien Ron de bruin ...

Il a réalisé l'équivalent de la fonction Dir() ...

Sur son site, il faut aller chercher

Function GetFilesOnMacWithOrWithoutSubfolders(Level As Long, ExtChoice As Long, _
                                              FileFilterOption As Long, FileNameFilterStr As String)
'Ron de Bruin,Version 4.0: 27 Sept 2015
'http://www.rondebruin.nl/mac.htm
'Thanks to DJ Bazzie Wazzie and Nigel Garvey(posters on MacScripter)

J'espère que cela aidera ...

bonjour,

comme la fonction dir et la librairie filescripting n'existent pas sur mac, je te propose le code suivant inspiré de la réponse de fred

Sub aargh1()
    chemin = "/documents/"    ' à adapter répertoire dans lequel se trouvent les images
    With ActiveSheet
        i = 1    'première ligne
        c = "A"    ' colonne dans laquelle se trouvent les gencods
        While .Cells(i, c) <> ""
            f = ""
            If FileOrFolderExistsOnMac(1, chemin & .Cells(i, c) & ".jpg") Then .Cells(i, c).Interior.Color = vbGreen
            i = i + 1
        Wend
    End With

End Sub

Function FileOrFolderExistsOnMac(FileOrFolder As Long, FileOrFolderstr As String) As Boolean
'*********************************************************************************************************
'Test l'existence d'un fichier (ou d'un dossier) sous MAC
'APPEL: FileOrFolderExistsOnMac(1, Fichier)
'*********************************************************************************************************
'By Ron de Bruin
'30-July-2012
'Function to test whether a file or folder exist on a Mac.
'Uses AppleScript to avoid the problem with long file names
'test si un fichier ou un dossier existe deja
'premier parametre = 1 => test de l'existance d'un fichier
'premier parametre = 2 => test de l'existance d'un dossier
Dim ScriptToCheckFileFolder As String
ScriptToCheckFileFolder = "tell application " & Chr(34) & "Finder" & Chr(34) & Chr(13)
If FileOrFolder = 1 Then
    ScriptToCheckFileFolder = ScriptToCheckFileFolder & "exists file " & Chr(34) & FileOrFolderstr & Chr(34) & Chr(13)
Else
    ScriptToCheckFileFolder = ScriptToCheckFileFolder & "exists folder " & Chr(34) & FileOrFolderstr & Chr(34) & Chr(13)
End If
ScriptToCheckFileFolder = ScriptToCheckFileFolder & "end tell" & Chr(13)
FileOrFolderExistsOnMac = MacScript(ScriptToCheckFileFolder)
End Function

Re bonjour

après consultation du site de rondebruin, (cela faisait un moment que je ne l'avais pas consulté),

si je ne dis pas de bêtises la fonction DIR existe maintenant a partie d'excel 2016 pour mac c'est un grand progrès......

fred


Pour savoir la syntaxe de qu'il faut mettre dans ta variable chemin je peux te proposer le code suivant, qui demande l'utilisateur de choisir un fichier, je l'ai adapter pour mettre le résultat dans la cellule A1 de la feuille active comme ça tu n'auras qu'a recopier le chemin dans ton code de h2so4

fred

sub test()
retour = myGetOpenFileName
end sub
Function myGetOpenFileName(Optional MyPath As String) As String
'*********************************************************************************************************
'demande a l'utilisateur de choisir un fichier XLSM pour importer .....
'*********************************************************************************************************
Dim Myfile As String
Dim MyScript As String
    If MyPath = vbNullString Then
        'si pas d'argument le dossier ou se trouve la fenetre demandant le fichier se trouvera dans le dossier contenant ce fichier
        MyPath = MacScript("return (path to documents folder) as String")
    Else
        'on peut passer en argument un dossier de reference dans lequel va s'ouvrir la fenetre de choix du fichier
        MyPath = " alias """ & MyPath & """"
    End If
    MyScript = "set applescript's text item delimiters to {ASCII character 10} " & vbNewLine & _
        "set theFiles to (choose file of type " & _
        " {""org.openxmlformats.spreadsheetml.sheet.macroenabled""} " & _
        "with prompt ""RECHERCHER LE FICHIER : "" default location alias """ & _
        MyPath & """ multiple selections allowed false) as string" & vbNewLine & _
        "set applescript's text item delimiters to """" " & vbNewLine & _
        "return theFiles"
    'chemin + nom_fichier
    Myfile = MacScript(MyScript)
[A1]= Myfile

end function

Attention ce genre de fonction/instruction ne marche pas ou très mal quand il y a des lettres accentuées dans le chemin

fred


Edit 2

h2so4 il faut enlever le

set fs=scripting...... 

car cela plantera sous mac si mes souvenirs sont bons

fred2406 a écrit :

Re bonjour

Edit 2

h2so4 il faut enlever le

set fs=scripting...... 

car cela plantera sous mac si mes souvenirs sont bons

je venais de m'en rendre compte et j'ai corrigé. Merci

Salut à tous et merci pour votre aide, alors, dans ma macro j'ai mis ça :

Sub aargh1()
    chemin = "/Users/gmaz/Documents/SAUVEGARDE/dossier/FournisseursSansTri/Wirquin/Visuels/bd/"    ' à adapter répertoire dans lequel se trouvent les images
   With ActiveSheet
        i = 2    'première ligne
       c = "B"    ' colonne dans laquelle se trouvent les gencods
       While .Cells(i, c) <> ""
            f = ""
            If FileOrFolderExistsOnMac(1, chemin & .Cells(i, c) & ".jpg") Then .Cells(i, c).Interior.Color = vbGreen
            i = i + 1
        Wend
    End With

End Sub

Function FileOrFolderExistsOnMac(FileOrFolder As Long, FileOrFolderstr As String) As Boolean
'*********************************************************************************************************
'Test l'existence d'un fichier (ou d'un dossier) sous MAC
'APPEL: FileOrFolderExistsOnMac(1, Fichier)
'*********************************************************************************************************
'By Ron de Bruin
'30-July-2012
'Function to test whether a file or folder exist on a Mac.
'Uses AppleScript to avoid the problem with long file names
'test si un fichier ou un dossier existe deja
'premier parametre = 1 => test de l'existance d'un fichier
'premier parametre = 2 => test de l'existance d'un dossier
Dim ScriptToCheckFileFolder As String
ScriptToCheckFileFolder = "tell application " & Chr(34) & "Finder" & Chr(34) & Chr(13)
If FileOrFolder = 1 Then
    ScriptToCheckFileFolder = ScriptToCheckFileFolder & "exists file " & Chr(34) & FileOrFolderstr & Chr(34) & Chr(13)
Else
    ScriptToCheckFileFolder = ScriptToCheckFileFolder & "exists folder " & Chr(34) & FileOrFolderstr & Chr(34) & Chr(13)
End If
ScriptToCheckFileFolder = ScriptToCheckFileFolder & "end tell" & Chr(13)
FileOrFolderExistsOnMac = MacScript(ScriptToCheckFileFolder)
End Function

ça ne me mets pas de message d'avertissement, par contre, ça ne me colore aucune cellule

Re bonjour

par acquis de conscience je viens de lancer ma machine virtuelle MAC et tester le code fourni précédemment

en ayant adapter le chemin à ma machine

MacOS:Users:administrateur:Documents:test:

la macros fonctionne correctement

capture

je te suggère donc de vérifier dans un premier temps le chemin

et peut être utiliser un chemin plus court aussi pour test

par contre tu peux supprimer cette ligne qui ne sert plus a rien

f = ""

fred


par contre avec le nom de chemin ecrit comme cela :

chemin = "/Users/administrateur/Documents/test/"

cela ne marche pas

donc prend mon code dans un de mes posts précédents colle le dans un module, place un fichier excel avec extension xlsm dans le dossier dans lequel tu dois arrivé, execute le code et tu obtiendras le bon chemin a utiliser et a mettre dans le code qui fonctionne

Fred

Bonjour Fred et merci pour tes précisions.

J'ai suivi ce que tu m'as dit, j'ai mis le bon chemin mais ça ne fait rien quand j'exécute la macro

Alors soit j'ai oublié quelque chose, soit je suis stupide

Bonjour il manque un : Après bd

Fred

Hello,

ça fonctionne PARFAITEMENT BIEN !!!!!!!

Un grand merci à tous, vous allez me faire gagner énormément de temps ! Vous êtes au top !

Encore merci et à bientôt

Rechercher des sujets similaires à "comparaison contenu ligne fichiers dossier"