Macro qui recherche en fonction du texte et non emplacement

Fermé
she - 25 juil. 2014 à 16:38
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 - 8 août 2014 à 16:52
Bonjour,

une personne très sympa m'avait déjà aidé sur ce fichier, elle m'avait montré comment retrouver une donnée à partir d'un titre et non de son emplacement.
j'aimerai aujourd'hui savoir sur le même fichier si il
est possible de copier les données aussi en fonction des noms des fruits ?
Si par exemple le nom de mes fruits dans mon tableau-final ne sont pas dans le même ordre que dans mon fichier source.
comment faire?
merci de vos réponse

voici un lien vers mon fichier, pour une meilleure compréhension de ma question

http://www.cjoint.com/?3GznRB4RZea


A voir également:

3 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
25 juil. 2014 à 19:16
Bonjour,

Une facon de faire avec l'objet Dictionary: https://www.cjoint.com/?DGztpmIAtu0
0
Bonjour ,merci beaucoup pour votre aide,

je suis vraiment désolé, je me suis trompé de fichier, je voulais parler de ce fichier là :
http://www.cjoint.com/?3GDhtJjc4nx
c'est un fichier pour lequel, je pense que c'était vous qui m'aviez déjà aidé.
si vous pouvez me re aider sur ce fichier là se serait cool, sinon je comprendrais.

merci beaucoup

cordialement,
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
29 juil. 2014 à 09:47
Bonjour,

Pas grave. Est-ce que je vous ai un peu aide sur ce fichier meme si ce n'etait pas le bon ???

Je recupere celui qui vous interesse et vous tiens au courant

A+
0
oui merci, vous m'avez bien aidé, parce que j'ai appris quelquechose que je ne connaissais pas, même si j'ai encore du mal à l'appliquer.
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
29 juil. 2014 à 15:30
Re,

Y a comme un bleme, vous mettez a dispo le fichier que je vous ai modife tout au debut; Fichier auquel vous avez demande ensuite d'enlever la boite a dialogue recherche de fichier; Que vouez-vous a juste, parce que le dernier fichier que j'ai modifie ressemble etrangement au deuxieme avec traitement colonnes en desordre.
0
bonjour,

En fait j'aimerai savoir comment faire la meme chose que ce que vous m'aviez fait dans le mauvais fichier que j'avais posté. c'est à dire traitement colonne en désordre mais sur le fichier sur lequel vous m'aviez aidé tout au début.

J'ai essayé plusieurs fois de le faire tout seul mais je n'ai jamais réussi,
sachant que le nombre de ligne entre les fruits ne sont jamais fixe dans le fichier "tableau de bord".

merci
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
30 juil. 2014 à 14:51
Re,

fichier modifie: https://www.cjoint.com/?DGEoYQzSKRH

A+
0
Bonjour,

merci pour votre réponse.
Serait-il possible pour vous encore de m'aider avec cette question svp?
https://forums.commentcamarche.net/forum/affich-30578707-equivalent-a-filesearch-pour-excel-2010

merci
cordialement,
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
1 août 2014 à 15:19
Bonjour,

Que souhaitez-vous faire????
0
Bonjour,

j'aurai encore besoin d'aide sur le fichier concernant "tableau de bord"

j'aimerai que mes données se copie non en reprenant les noms qui sont dans les colonnes de mon tableau final, mais les noms (qui sont tous differents) données dans mon tableau de bord.

Pour pouvoir les copier dans les colonnes correspondant à mon tableau final mais qui cette fois aurait un nom different (du fichier tableau de bord)

par exemple j'aimerai copier les chiffres des deux dernières lignes correspondant au fruit pomme du tableau de bord dans une des colonnes de mon tableau final, mais qui à la place de s'appeler pomme s'appelerait légume
ect..

merci encore pour votre aide

cordialement,
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
1 août 2014 à 19:15
Re,

mais qui à la place de s'appeler pomme s'appelerait légume Oui si vous avez une table ds correspondance.

Et pour le Lien (#12), que voulez-vous faire ???
voici deux exemples de recherche de fichier https://www.cjoint.com/?DHbtoxMz9Q8
0
Bonjour,

merci, j'ai regardé vos fichiers mais je ne pense pas que ça correspond exactement à ce que je veux. J'ai modifié lègerement votre code, en gros j'aimerai quelquechose comme ça, existe t il un moyen de transformer ce code de façon plus court. Sans que j'ai à le répeter chaque fois pour chaque fruit que je cherche
j'ai cherché les chiffres correspondant à environnement et essai pour un fruit précis et les aient copié dans une case précise du tableau final que j'ai choisi.

Rech1 = "ENVIRONNEMENT"
    Rech2 = "ESSAI"
    Rech3 = "BANANE"
    Rech4 = "ANANAS"
    With Worksheets("A")
        Derlig = .Range("C" & Rows.Count).End(xlUp).Row
        Set TColB = .Range("B3:B" & Derlig)
        ' Worksheets("feuil1").Range("B4") = .Range("C" & Derlig)
        
        For Point = 1 To 21
           
            Nb = Application.CountIf(TColB, Rech3)
            If Nb > 0 Then
                n = n + 1
                lig = 3
                lig = .Columns("B").Find(Rech3, .Cells(lig, "B"), , xlWhole).Row
                lig = .Columns("A").Find(Rech1, .Cells(lig, "A"), , xlWhole).Row
               ' Worksheets("feuil1").Cells(2, 1) = Rech1
                Worksheets("feuil1").Cells(2, 2) = .Cells(lig, 3)
                lig = .Columns("A").Find(Rech2, .Cells(lig, "A"), , xlWhole).Row
                'Worksheets("feuil1").Cells(3, 1) = Rech2
                Worksheets("feuil1").Cells(3, 2) = .Cells(lig, 3)
            End If
        Next Point
          For Point = 1 To 21
           Nb = Application.CountIf(TColB, Rech4)
            If Nb > 0 Then
                n = n + 1
                lig = 3
                lig = .Columns("B").Find(Rech4, .Cells(lig, "B"), , xlWhole).Row
                lig = .Columns("A").Find(Rech1, .Cells(lig, "A"), , xlWhole).Row
               ' Worksheets("feuil1").Cells(2, 1) = Rech1
                Worksheets("feuil1").Cells(2, 3) = .Cells(lig, 3)
                lig = .Columns("A").Find(Rech2, .Cells(lig, "A"), , xlWhole).Row
                'Worksheets("feuil1").Cells(3, 1) = Rech2
                Worksheets("feuil1").Cells(3, 3) = .Cells(lig, 3)
            End If
        Next Point
        

ect..
P.S : je n'ai pas bien compris dans votre code à quoi correspondait n = n+1

Merci d'avance pour votre aide.
cordialement,
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
5 août 2014 à 08:10
Bonjour,

merci, j'ai regardé vos fichiers mais je ne pense pas que ça correspond exactement à ce que je veux. Ben oui, mais si vous ecriviez ce que vous voulez cela serait plus facile que de deviner!!!!! Vous voulez faire une recherche pour un fruit ou ...... ?????


n=n+1: pour voir si tous les fruits sont pris en compte, a supprimer
0
Bonjour,
Désolé pour mes explications un peu confuse mais j'ai pu résoudre le pb des fruits par moi-même, finalement.
Dsl de vous embêter encore une fois mais j'aurai encore une dernière question à vous poser concernant concernant le lien #12.


J'ai une macro qui ne marche plus sur Excel 2010 car elle utilise application.fileSearch.
J'ai vu sur internet qu'il y avait un équivalent avec FileSystemObject mais je ne sais pas comment l'appliquer à mon code. Pouvez-vous m'aidez svp ?

Cette macro copie des fichiers issus de plusieurs dossiers d'un répertoire appelé contrôle ses fichiers s'appelle fichierNom_bis.xls ,
Pour les insérer dans d'autre fichier de plusieurs dossiers d'un répertoire appeler "Fiche" en les renommant fichierNom.xls (c'est à dire du même nom que les dossiers copier mais sans le bis)

Le code ci-dessous fait partie du bouton « test » qui cherche les bon fichiers et les met dans la colonne de droite et inscrit les fichiers qui ont une erreur (dans le nom est mal écrit) dans la colonne de gauche sans les copier (une fois le test fait on peut les copier via un autre bouton).

Mes questions :
Comment remplacer l'objet application.filesearch pour qu'il marche sous Excel 2010 ?
Le complément Filesearch que j'ai essayé ne marche-t-il que Excel 2007 et non 2010 ou parce-que j'ai mal adapté mon code ?

With Application.FileSearch
    .NewSearch
    .LookIn = sDirSource
    .SearchSubFolders = True
    .FileName = "xls"
    .MatchTextExactly = True
    .Execute msoSortByFileName
   
    For iligne = 1 To .FoundFiles.Count
        sFileNameSource = .FoundFiles(iligne)
        sFileNameCible = Replace(sFileNameSource, sSearchCar1, sSearchCar2)
        sFileNameCible = Left(sFileNameCible, Len(sFileNameCible) - 4) & "_bis.xls"
        
        'feuille1.Cells(iligne + 6, 1) = sFileNameSource
        'feuille1.Cells(iligne + 6, 2) = sFileNameCible
        
        If Dir(sFileNameCible) = "" Then
          'Cas où il n'y pas de fiche resultat pour une fiche 
           feuille1.Cells(iligne + 6, 2) = Mid(sFileNameCible, InStrRev(sFileNameCible, sSearchCar2) + Len(sSearchCar2) + 1)
        
        Else
         
            'feuille1.Cells(iligne + 6, 1) = sFileNameSource
            feuille1.Cells(iligne + 6, 1) = Mid(sFileNameSource, InStrRev(sFileNameSource, sSearchCar1) + Len(sSearchCar1) + 1)
            
                       
            'Application.StatusBar = "                      FIchier  " & iligne & "      " & sFileNameCible
                
        End If  ' fin du test sur l'existence du fichier
         
    Next iligne  ' Fichier suivant
End With 


De plus,

j'ai essayé d'utiliser un complément FileSearch issus du lien http://silkyroad.developpez.com/vba/classefilesearch/ , mais peut être que je m'y prends mal ,parce qu'il m'affiche "erreur de compilation type d'argument byRef imcompatible" et me surligne "iligne".



voici le code que j'ai adapté

Dim Recherche As ClFileSearch.ClasseFileSearch
 
 Dim Recherche As ClFileSearch.ClasseFileSearch
Set Recherche = ClFileSearch.Nouvelle_Recherche
 
With Recherche
    'Définit le répertoire de recherche
    .FolderPath = "sDirSource"
 
    'Définit la recherche dans les sous dossiers ( / False)
    .SubFolders = True
 
    'Option de tri:
    '(Sort_None, sort_Name, sort_Path, sort_Size, sort_DateCreated, sort_LastModified, sort_Type)
    'Pas de tri si le paramètre n'est pas spécifié.
    .SortBy = sort_Name
 
    'Option pour rechercher un type de fichier
    '(Renvoie tous les fichiers si non spécifié)
    .Extension = "*.xls"
 
    'Execute la recherche
    .Execute
 
           
    For iligne = 1 To .FoundFilesCount
        sFileNameSource = .Files(iligne)
        sFileNameCible = Replace(sFileNameSource, sSearchCar1, sSearchCar2)
        sFileNameCible = Left(sFileNameCible, Len(sFileNameCible) - 4) & "_bis.xls"
        
        'feuille1.Cells(iligne + 6, 1) = sFileNameSource
        'feuille1.Cells(iligne + 6, 2) = sFileNameCible
        
        If Dir(sFileNameCible) = "" Then
          'Cas où il n'y pas de fiche resultat pour une fiche 
           feuille1.Cells(iligne + 6, 2) = Mid(sFileNameCible, InStrRev(sFileNameCible, sSearchCar2) + Len(sSearchCar2) + 1)
        
        Else
         
            'feuille1.Cells(iligne + 6, 1) = sFileNameSource
            feuille1.Cells(iligne + 6, 1) = Mid(sFileNameSource, InStrRev(sFileNameSource, sSearchCar1) + Len(sSearchCar1) + 1)
            
                       
            'Application.StatusBar = "                      FIchier  " & iligne & "      " & sFileNameCible
                
        End If  ' fin du test sur l'existence du fichier
         
    Next iligne  ' Fichier suivant
End With 


Merci beaucoup pour votre aide,
cordialement
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
7 août 2014 à 18:11
Bonjour,

Demain matin, je regarde ce probleme remplacement instruction application.filesearch.

A+
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
8 août 2014 à 12:03
Bonjour,

Pour recherche de fichier (Lien#12), en lien#15 je vous avais mis deux fichiers exemples avec FileSystemObject

Un complement doit etre sur le PC ou vous utilisez un fichier excel qui s'y refere et doit etre coche dans option complement ......
0
Bonjour,

merci pour votre réponse, concernant le complément est rajouté sur l'ordinateur et est bien coché à chaque fois que j'ouve le fichier, mais l'erreur" erreur de compilation type d'argument byRef incompatible" apparait quand même.
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
8 août 2014 à 16:03
Re,

concernant le complément est rajouté sur l'ordinateur Oui, mais si vous passez le fichier a une autre personne sur un autre PC, faudra faire de meme.

Avec la methode FileSystemObject aucun soucis de ce genre.

Maintenant si vous voulez absolument avoir un complement, c'est a voir
0