recherche d'une date dans plusieurs fichiers pour recopie de plages de cellules

boudu

XLDnaute Occasionnel
Bonjour au forum
J'ai déjà été aidé sur mon projet par skooby, pierrejean, epaf, luki et excel lent mais l'intitulé précédent ne correspond plus à la nouvelle étapre (la collaboration des personnes citées ci-dessus a permis de regler le probleme)

L'etape suivante me semble tres compliquée mais j'espere faisable:

Il s'agit d'aller chercher dans 5 fichiers la date correspondant à celle saisie dans une inputbox (fichier choixdate.xls) et de recopier les cellules situées en-dessous

Je joins mon fichier test avec 2 bureaux (en réalité il y en a 5)

Le chemin par defaut pour mes tests est c:

Merci d'avance à ceux qui pourront m'aider
 

Pièces jointes

  • choixdate.zip
    25.6 KB · Affichages: 47
  • choixdate.zip
    25.6 KB · Affichages: 57
  • choixdate.zip
    25.6 KB · Affichages: 51

Épaf

XLDnaute Occasionnel
Re : recherche d'une date dans plusieurs fichiers pour recopie de plages de cellules

Sans ouvrir ton fichier joint, quelles sont tes difficultés ? Ouverture de tes classeurs ? recherche de la date ? Le format des données ?
Pour faire une recherche sur les dates, la méthode la plus sûre, parce que libérée des formats de dates saisies, est de formater tes colonnes date en nombre et la date cherchée en N° de série.
J'explique : Si tu saisies "9/10/07" dans une cellule, formaté dans ta colonne "09/10/2007", et que la date recherchée est "9/10/2007", la macro ne la trouveras pas.
Tandis que si tu cherches le N° de série de "9/10/2007", soit 39364, dans une colonne formaté en nombre, les trois dates proposés ci-dessus seront trouvées avec find.
Pour passer ta colonne en format Nombre, tu as
Code:
    Columns("D:D").NumberFormat = "0"
Et pour rétablir ta colonne au format "08/10/2007"
tu as
Code:
    Columns("D:D").NumberFormat = "mm/dd/yyyy"
Oui, les mois et les jours sont inversés avec NumberFormat (contrairement à Format(LaDate, "dd/mm/yyyy") utilisable pour une cellule ou un affichage)
Pour convertir la date saisie en N° de série, si elle sort d'un inputbox par exemple, tu as
Code:
LaDate = cdbl(cdate("8/10/2007"))
'ou
LaDate = CDbl(CDate("8/10/07"))
Bonne journée
 

boudu

XLDnaute Occasionnel
Re : recherche d'une date dans plusieurs fichiers pour recopie de plages de cellules

re
bonjour epaf
merci pour tous ces éléments:
la difficulté est dans l'execution du code, il faut que dans la macro soit incorporée le fait qu'on va chercher la date dans les 5 fichiers et on doit recopier les cellules figurant sous celle ci

je pense que je vais pouvoir remedier aux soucis de format date avec les elements que tu m'as donnés (je crois qu'il faut que j'impose le format à la variable "question" et que je definisse le format dans les dates des 5 fichiers

Par ailleurs j'ai aussi des difficultés (alors que je croyais que ce serait simple) pour ajouter la recopie des autres fichiers, c'est la raison pour laquelle j'en ai mis 2 dans mon test)
J'essaie de voir ces problemes de format
Bonne journée
 

boudu

XLDnaute Occasionnel
Re : recherche d'une date dans plusieurs fichiers pour recopie de plages de cellules

re
Epaf, le forum

oulala, j'ai du mal avec ces formats de date et je ne sais pas non plus comment utiliser la fonction find (et une fois que la date est trouvée il faut copier les cellules en dessou!)

est ce que je dois forcer un format dans mes fichiers initiaux (bureau1, 2 ..) ou puis je laisser le format date personnalisé comme actuellement?

Merci
 

Épaf

XLDnaute Occasionnel
Re : recherche d'une date dans plusieurs fichiers pour recopie de plages de cellules

En faisant ce que je t'ai dit, tu te libères complètement du format de date.
Pour copier une date d'un fichier dans l'autre, si ta colonne qui reçoit la date sous forme de N° de série, est dans un format de date, la valeur placée prendra le format de la colonne.
Exemple :
Code:
LaDate = cdbl(cdate(InputBox("Saisir la date"))) ' => 39364 pour le "9/10/2007"
Si la colonne NoCol est au format date et que tu mets
Code:
Worksheets("Feuil1").cells(NoLigne,NoCol).value = LaDate
tu auras la date au format de la colonne.
Par contre si tu copies la cellule contenant la date en N° de série, (avec copy... Paste) tu obtiendras un N° de série dans ta colonne puisque Paste inclut le format lors du collage.
Pour ne pas copier le format, et en supposant que tu veuilles copier la date située dans classeur1.xls, feuil1, cellule C1 dans classeur2.xls... , tu fais
Code:
    Workbooks("Classeur1.xls).Worksheets("Feuil1").Range("C1").Copy
    Workbooks("Classeur2.xls).Worksheets("Feuil3").Cells(NoLigne, NoCol).PasteSpecial Paste:=xlPasteValues
Ainsi tu n'auras pas de changement de format dans classeur2
@+
 

boudu

XLDnaute Occasionnel
Re : recherche d'une date dans plusieurs fichiers pour recopie de plages de cellules

re
epaf, le forum

j'ai un peu modifié mon fichier choixdate pour faire apparaitre la date en A2 sur le fichier créé

Je crois que mon souci n'est pas vraiment le format de la date finalement mais plutôt la recherche de la date correspondante qui est en ligne 2 dans les 5 fichiers sources et surtout de recopier en fonction de cette date les elements saisiis en dessous sur 16 lignes dans mon exemple

Je pense qu'il faut d'abord que j'aie cette partie du code pour verifier ce que j'ai besoin de toucher au niveau des formats date

En plus je n'arrive pas à copier les elements de bureau2, bureau3... Je pensais que je n'avais qu'à recopier le code en changeant bureau1 par bureau2 puis 3... mais je ne sais pas à quelle ligne commencer et finir vu que je dois ouvrir et fermer les fameux fichiers
Pour acceder au code de chopixdate il faut faire ctrl pause sinon on quitte excel
 

boudu

XLDnaute Occasionnel
Re : recherche d'une date dans plusieurs fichiers pour recopie de plages de cellules

re
j'ai oublié de mettre le fichier
 

Pièces jointes

  • choixdate.xls
    33.5 KB · Affichages: 72
  • choixdate.xls
    33.5 KB · Affichages: 68
  • choixdate.xls
    33.5 KB · Affichages: 73

boudu

XLDnaute Occasionnel
Re : recherche d'une date dans plusieurs fichiers pour recopie de plages de cellules

re
j'ai trouvé pour la recopie des autres bureaux par contre je ne sais pas comment coder la recherche de la date et la recopie des cellules en dessous

Dur, dur..
 

Épaf

XLDnaute Occasionnel
Re : recherche d'une date dans plusieurs fichiers pour recopie de plages de cellules

Fais cette recherche avec find. Et c'est là que je conseille de faire cette recherche sur le N° de série.
Pour find, tu as un exemple en ligne (F1). Il suffit de supprimer la boucle comportant le FinNext puisque cette boucle sert à trouver la même occurence quand il y en a plusieurs dans une colonne, une ligne ou une feuille.
Allez, comme je suis brave...
Code:
    'Ta boucle de saisie
    LaDate = cdbl(cdate(Inputbox("Saisir la date etc.")
    '....
    
    Worksheets("TaFeuille").Columns("A:A").NumberFormat = "0"
    With Worksheets("TaFeuille").Range("a1:a500")

        Set c = .Find(LaDate, lookin:=xlValues)
        If Not c Is Nothing Then
            'Là, tu choisis ce qui te convient
            adres = c.Address
            'ou
            NoLigne = c.Row
            'la colonne tu la connais donc inutile
            NoCol = c.column
            'et pour le contenu de la cellule (la valeur cherchée)
            ValeurLue = c
        End If
        'et tu remets le format pour ta colonne
        Columns("A:A").NumberFormat = "mm/dd/yyyy"
    End With
Avec Offset(0, n) tu peux avoir les données des cellules de la ligne trouvée (c.row, colonne n)
Bon courage
 
Dernière édition:

boudu

XLDnaute Occasionnel
Re : recherche d'une date dans plusieurs fichiers pour recopie de plages de cellules

merci epaf
j'essaie d'adapter ce code à mon probleme

est-ce que tu as jeté un oeil à mon fichier pour voir si le code est pas trop mauvais?

@+
 

Pièces jointes

  • choixdate.xls
    38 KB · Affichages: 57
  • choixdate.xls
    38 KB · Affichages: 67
  • choixdate.xls
    38 KB · Affichages: 65

boudu

XLDnaute Occasionnel
Re : recherche d'une date dans plusieurs fichiers pour recopie de plages de cellules

re
epaf, le forum
le code n'est pas facile à transposer car les dates sont en ligne et pas en colonne (ligne 2 de la colonne b à la colonne IV) et je ne vois pas comment faire recopier le contenu de la colonne sous la cellule de la ligne concernée

par ex la date est trouvée dans la cellule b2 et je veux alors que la plage b3 à b16 soit recopiée

de plus on avait mis plusieurs tests et du coup je sais plus placer le code dans l'ordre..
 

Épaf

XLDnaute Occasionnel
Re : recherche d'une date dans plusieurs fichiers pour recopie de plages de cellules

Tu n'as rien à transposer. Au lieu de chercher dans une plage verticale, c'est une plage horizontale. Tu peux ajouter le paramètre en reouge
Code:
Set c = .Find(LaDate, lookin:=xlValues,[B][COLOR="Red"] SearchOrder:=xlByColumns[/COLOR][/B])
Quant à la copie, je prends ton exemple. Si tu as trouvé ta donnée en B2, tu as le N° de colonne = c.column
Pour copier / Coller, tu mets
Code:
Range(Cells(c.row, c.column + 1), Cells(c.row, 16)).copy destination:=l'adresse de destination
destination:= est facultatif, tu peux mettre directement l'adresse de la 1ère cellule de l'adresse de collage.
A+
 

boudu

XLDnaute Occasionnel
Re : recherche d'une date dans plusieurs fichiers pour recopie de plages de cellules

bonjour epaf, le forum
decidement j'ai du mal, j'ai essayé de sortir du contexte de mon fichier pour faire tourner le code que tu m'as fourni mais j'arrive sur une erreur et je n'arrive pas à comprendre ce qui ne va pas

j'ai mis un bouton pour lancer la macro sur la meme feuille et recopier à partir de A20

Je craque!!
 

Pièces jointes

  • copie selon date.xls
    28 KB · Affichages: 68

boudu

XLDnaute Occasionnel
Re : recherche d'une date dans plusieurs fichiers pour recopie de plages de cellules

Bonsoir au forum
j'ai essayé de nombreuses possibilités toute la journée (toutes les infos données par epaf) mais en vain. Je suis vraiment trop debutant pour mettre tout ça en place..
Si quelqu'un pouvait m'aider directement sur mes fichiers tests ce serait ideal
J'ai fait un fichier qui trouve la date recherchée sur le meme fichier mais quand j'essaie de mettre le code sur mon vrai fichier ça ne marche pas

Merci
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 206
Messages
2 086 219
Membres
103 158
dernier inscrit
laufin