VBA - Problème de recherche date

antoine04

XLDnaute Nouveau
Bonjour tlm,

J'ai créé une macro pour extraire les données d'une année entière et cela fonctionne, en voici un morceau

If tableau(n, 47) = "Expédié" And tableau(n, 42) >= CDate("01/01/2009") And tableau(n, 42) <= CDate("31/12/2009") Then

En revanche, j'aimerai aller plus loin, j'ai une textbox "annee" ou j'aimerai que quand je met 2008 dedans, cela me sort les données de toute l'année 2008. Mais c'est ici que je bloque, quelqu'un a-t-il une solution à me proposer ?

J'ai essayé différente chose, mais je ne trouve pas.

Merci d'avance.
 

Modeste

XLDnaute Barbatruc
Re : VBA - Problème de recherche date

Bonjour antoine04,

Ce n'est pas ton premier message ... avec l'habitude, tu devrais savoir qu'avec un petit fichier exemple et quelques explications circonstanciées, c'est toujours plus clair et donc plus efficace! :rolleyes:

Essaye:
Code:
If tableau(n, 47) = "Expédié" And [B][COLOR="Red"]Year([/COLOR][/B]tableau(n, 42)[COLOR="red"][B])[/B][/COLOR]= [COLOR="Green"]... ce qui figure dans ton textBox (mais qui sera donc du texte !!)[/COLOR]

... En admettant que "tableau(n, 42)" contienne bien une date valide. Sans savoir si ton textBox est dans la feuille de calcul, dans un UserForm, ... difficile d'imaginer tous les cas de figure possible.
 

antoine04

XLDnaute Nouveau
Re : VBA - Problème de recherche date

Dans un premier temps, merci pour ta réponse.

Cela ne fonctionne pas, mais je vais faire un petit fichier ce soir et te le transmettre ;)

Petite question au passage, j'ai ce morceau de code (obtenu de façon automatique)

Cells.Select
With Selection.Font
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With

Existe-t-il une ligne de code simple et qui ne rame pas, qui supprime toute les mises en forme d'une page (souligné, barré, gras, couleur, etc...)

Merci d'avance.
 

antoine04

XLDnaute Nouveau
Re : VBA - Problème de recherche date

Bonjour,

dsl pour mon temps de réponse.

Vous trouverez en pièce jointe un fichier test avec ce que je souhaiterais avoir.

Donc je résume :

J'aimerai faire une macro qui extrait toute les données d'une année ayant comme statut "Expédié". Sachant que cette année est écrite dans une TextBox.

Exemple : Si c'est écrit "2009" dans la TextBox, je souhaite avoir toute les commandes "Expédié" du 01/01/2009 au 31/12/2009.

Pour la deuxième macro du document, je sais la réaliser avec des filtres automatiques (en macro), mais pas avec ce système de code, or ce système est moins volumineux en extraction (mon fichier fait plus de 3 000 lignes), donc j'accepte toute aide aussi ^^

Je reste disponible pour toute question.

Merci d'avance.

EDIT : tototiti, merci pour cette info, je n'y avais pas pensé, honte à moi !!! Mais maheureusement cela change mon format date aussi, or celui-ci il ne dois pas changer. Mais bon pour le moment c'est pas le plus important pour moi, mais merci.

Antoine
 

Pièces jointes

  • antoine.zip
    18.5 KB · Affichages: 26
  • antoine.zip
    18.5 KB · Affichages: 30
  • antoine.zip
    18.5 KB · Affichages: 26

Modeste

XLDnaute Barbatruc
Re : VBA - Problème de recherche date

Bonjour Antoine, salut tototiti,

A la ligne 83 de ton code:
Code:
For n = LBound(tableau, 1)[COLOR="Red"][B] + 1[/B][/COLOR] To UBound(tableau, 1)
... sinon le premier élément de ton tableau, ce sont les titres des colonnes.

2 lignes plus bas:
Code:
  If tableau(n, [COLOR="red"][B]3[/B][/COLOR]) = "Expédié" And [B][COLOR="red"]Year([/COLOR][/B]tableau(n, 1)[COLOR="red"][B])[/B][/COLOR] = [COLOR="red"][B]Val([/B][/COLOR]UserForm1.année.Value[B][COLOR="red"])[/COLOR][/B] Then
... semblent fonctionner, me semble-t-il!?
 

antoine04

XLDnaute Nouveau
Re : VBA - Problème de recherche date

Non j'ai pas le message d'erreur avec ton fichier donc c'est bon, mais je comprend pas pourquoi je l'avais avec le miens mais bon...

Sinon, je constate que je perd la mise en forme, la colonne B devient plus petite, es-ce qu'il y a un moyen pour remédier à cela ?
De même, si la ligne 3 est écrite en vert dans le fichier "Portefeuille", je constate que la ligne 3 de la feuille "extraction" sera toujours écrite en vert, quelque soit l'information dedans, donc même question que précédemment.

Je me demande si on ne peut pas prendre la mise en forme de la ligne trouver et la coller en même temps que le texte, mais la je ne sais vraiment pas faire.

Une petite idée ?

Merci pour la première solution que tu as trouvé :)
 

Modeste

XLDnaute Barbatruc
Re : VBA - Problème de recherche date

re²,

Pour la largeur de la colonne B, rien ne t'empêche de définir sa largeur manuellement: elle ne bougera plus ensuite !?

Dans ton code, tu copies la plage source dans un tableau. Dans ce cas je vois mal comment récupérer la mise en forme. Les deux solutions que je vois sont:
- une fois le code exécuté, re-parcourir la plage, à la recherche de données identiques à celles inscrites en feuille "extraction", puis une fois la concordance trouvée, récupérer la mise en forme pour l'appliquer dans la seconde feuille. Cependant, à mon avis et sur une plage de grandes dimensions, on risque de "perdre du temps" (puisqu'on parcourt la plage une deuxième fois)
- dès le départ, parcourir la plage source et recopier les infos et la mise en forme, au fur et à mesure qu'on trouve les données correspondantes.

Dans ton exemple, il n'y avait pas de mises en forme. Donc impossible de déterminer s'il s'agissait de mise en formes "manuelles" ou conditionnelles.
 

antoine04

XLDnaute Nouveau
Re : VBA - Problème de recherche date

Bonjour Modeste,

merci pour ta réponse.

Ton deuxième point me parait mieux vu la taille de mon fichier (colonne jusqu'à BW et + de 3500 lignes).

- dès le départ, parcourir la plage source et recopier les infos et la mise en forme, au fur et à mesure qu'on trouve les données correspondantes.

En revanche, je ne sais pas faire cela malheureusement, peut-tu m'aider stp ?

Je met un autre fichier exemple, avec des mises en formes manuelles.

Merci d'avance,

Antoine
 

Pièces jointes

  • antoine.zip
    19 KB · Affichages: 22
  • antoine.zip
    19 KB · Affichages: 29
  • antoine.zip
    19 KB · Affichages: 19

Modeste

XLDnaute Barbatruc
Re : VBA - Problème de recherche date

Bonjour Antoine, le forum,

En pièce jointe, une proposition (parmi bien d'autres, certainement!)
Je me suis simplifié la vie au maximum, mais partant de ce code, tu pourras nous dire si j'ai simplifié à l'excès. :cool:
- Ainsi, j'ai parcouru la colonne A de ta feuille source et j'ai repris le même test que dans la version précédente. Si les 2 conditions sont réunies, je copie la ligne entière dans la feuille "extraction" (de cette manière, les contenu et la mise en forme "suivent" ... reste à vérifier s'il n y a rien dans les autres colonnes de ta feuille "extraction"!)
- J'ai copié les largeurs de colonnes de la feuille "Portefeuille" pour les reproduire dans l'autre feuille "manuellement", plutôt que via la macro.
- Je ne me suis attaché qu'à la partie "recherche par année".

Comme tu le verras, une bonne partie du code est récupéré de la version précédente ... pas certain donc, que tu n'aurais pu le faire: il n'y a guère que quelques adaptations. ;)

Dis-nous ce qu'il en est, après avoir testé.

... Et puis surtout, si quelqu'un a une autre proposition, elle sera la bienvenue!
 

Pièces jointes

  • antoine (V2).zip
    17.3 KB · Affichages: 26

antoine04

XLDnaute Nouveau
Re : VBA - Problème de recherche date

Rebonjour,

je viens de faire les premier test sur mon fichier, et une chose à dire : Merci !!!
Je n'ai pas encore tester le code sous toute les formes, mais à priori cela est parfait et exactement ce que je souhaitais.

Merci beaucoup pour le temps que tu as pris à m'aider et pour ton aimabilité.

Antoine
 

Discussions similaires

Statistiques des forums

Discussions
312 305
Messages
2 087 077
Membres
103 455
dernier inscrit
saramachado