IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Recherche et affichage colonne [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 41
    Par défaut Recherche et affichage colonne
    Bonjour

    Puis-je une nouvelle fois demander votre aide (Je ne suis pas expert en VBA)
    J'ai une macro , mais je n’arrive pas à l’appliquer à mon fichier .
    La macro s'appelle "RechDate"
    1) La recherche ne se positionne pas sur le colonne recherchée
    2) Le coloriage ne se fait pas à l'endroit demandé
    3) Pas de message « Date inexistante »

    Autre chose, Je suis obligé de lancer manuellement l’exécution de la Macro, alors que je voudrais que celle-ci se déclenche dès que la cellule est saisie

    Je joins mon fichier d'exemple , ainsi que mon fichier "Test(1)" (si mot de passe , il n'y en a pas)
    Merci d’avance de corriger ma macro "RechDate"
    ainsi que pour votre aide

  2. #2
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Salut,
    J'ai regardé ton fichier Test, il y a plusieurs éléments à corriger.
    Pour commencer pour que la macro se lance automatiquement si la cellule B1 est modifiée tu dois placer le code ci-dessous dans le module de feuille "Présences" (click droit sur l'onglet\Voir code)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Lig As Long, Col As Long
    Dim Var1 As Long
     
    If Target.Address <> "$B$1" Then Exit Sub 'si la cellule modifiée est différente de B1 on sort => rien ne se passe
     
    Lig = Cells(Columns(1).Cells.Count, 1).End(xlUp).Row 'C'est la même chose que toi mais compatible XL2007
    Col = Cells(2, Rows(2).Cells.Count).End(xlToLeft).Column 'Même principe que pour les lignes mais en colonne
    Range(Cells(2, 4), Cells(Lig, Col)).Interior.ColorIndex = xlNone
     
     
    'Utiliser une liste de validation sur la feuille éviterait cette partie de code...
     
    'Intégration de la vérification de l'erreur sur Match dans la condition et adaptation de la plage
    'Il faut que le numéro renvoyé par Var1 soit le numéro de colonne, si tu commence pas à A tu as alors un décallage
        If Not IsError(Application.Match(ActiveSheet.Range("B1").Value2, ActiveSheet.Range("A2:IV2"), 0)) Then
            Var1 = Application.Match(ActiveSheet.Range("B1").Value2, ActiveSheet.Range("A2:IV2"), 0)
            Cells(2, Var1).Select
            Range(Cells(3, Var1), Cells(Lig, Var1)).Interior.ColorIndex = 4 'Semble inutile car il y a des formats conditionnels
        Else
            MsgBox "Date inexistante!"
    End If
     
    End Sub
    J'ai rapidement corrigé la macro pour qu'elle "fonctionne" mais je ne pense pas que ce soit le plus efficace, regardes mes commentaires dans le code.

    A+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 41
    Par défaut
    Bonjour
    Grand merci pour votre réponse rapide
    Mais j'ai encore besoin de votre aide....
    Je suis un débutant et j'essaye de m'appliquer au mieux grâce à vous

    J'ai "bêtement" copié votre code et cela fonctionnne !...
    - La date recherchée s'incrémente bien dans la cellule
    - Cependant la couleur s'affiche dans les lignes "32 à 43" (Vous m'en parliez)
    Comment peut-on corriger ce problème ?.....
    Je joins mon fichier avec votre code

    Grand merci encore
    J'attends avec impatience votre solution, car je suis bloqué dans mon projet

    Cordialement

  4. #4
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Citation Envoyé par jorisphi Voir le message
    ...
    - Cependant la couleur s'affiche dans les lignes "32 à 43" (Vous m'en parliez)
    Comment peut-on corriger ce problème ?.....
    ...
    Les autres lignes ne se mettent pas dans la couleur voulue car il y a des formats conditionnels.
    1er: cellule = 0 alors jaune
    2ème: Cellule ="p" alors vert
    3ème: Cellule <>"p" alors orange

    La deuxième et la troisième font en sorte qu'il y aura toujours un format conditionnel appliqué.
    Comme le format conditionnel "écrase" le format standard, l'action de la macro n'a pas d'utilité.

    Donc soit tu enlève le format conditionnel sur toute la plage de manière définitive, soit tu en as besoin et on doit la supprimer en début de macro pour la colonne correspondante à la date et la réappliquer aux autres.

    A toi de dire ce que tu veux.

    A+

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 41
    Par défaut
    Re-Bonjour
    Grand merci pour réponse
    Oh! J'en apprends tous les jours !......
    Malheureusement, j'en ai besoin losque j'encode les valeurs mais pas lors de la recherce par date
    Donc, il faut supprimer mes MFC en début de macro
    Puis-je vous demander votre nouvelle macro modifiée ?
    Encore grand MERCI

    Cordialement

  6. #6
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Bonjour,
    Voici le code pour supprimé la MEFC sur la colonne sélectionnée lors de la recherche d'une date...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    Sub RechDate()
    Dim Lig As Long, Col As Long
    Dim Var1 As Long
    Dim MaPlage As Range
    Lig = Cells(Columns(1).Cells.Count, 1).End(xlUp).Row 'C'est la même chose que toi mais compatible XL2007
    Col = Cells(2, Rows(2).Cells.Count).End(xlToLeft).Column 'Même principe que pour les lignes mais en colonne
    Range(Cells(2, 4), Cells(Lig, Col)).Interior.ColorIndex = xlNone 'enlève les couleurs de fond
    Range(Cells(2, 4), Cells(Lig, Col)).FormatConditions.Delete 'enlève la mise en forme conditionnelle
     
    'Sélection et suppression des MEFC pour la date choisie
    Var1 = Application.Match(ActiveSheet.Range("B1").Value2, ActiveSheet.Range("B2:IV2"), 0)
        If Not IsError(Var1) Then
            'Application des format conditionnel sur toute la plage pour remettre celles éventuellement supprimées
            Set MaPlage = Sheets("Présences").Range(Sheets("Présences").Cells(2, 4), Sheets("Présences").Cells(Lig, Col))
            MaPlage.FormatConditions.Delete
            MaPlage.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
                Formula1:="0"
            With MaPlage.FormatConditions(1).Font
                .Bold = True
                .Italic = False
                .ColorIndex = xlAutomatic
            End With
            MaPlage.FormatConditions(1).Interior.ColorIndex = 36
            MaPlage.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
            Formula1:="=""p"""
            With MaPlage.FormatConditions(2).Font
                .Bold = True
                .Italic = False
                .ColorIndex = xlAutomatic
            End With
            MaPlage.FormatConditions(2).Interior.ColorIndex = 35
            MaPlage.FormatConditions.Add Type:=xlCellValue, Operator:=xlNotEqual, _
                Formula1:="=""p"""
            With MaPlage.FormatConditions(3).Font
                .Bold = True
                .Italic = False
                .ColorIndex = xlAutomatic
            End With
            MaPlage.FormatConditions(3).Interior.ColorIndex = 40
            'Fin de l'application des MEFC sur la plage concernée
            Cells(4, Var1).Select
            Columns(Var1).FormatConditions.Delete 'enlève la mise en forme conditionnelle
            Range(Cells(3, Var1), Cells(Lig, Var1)).Interior.ColorIndex = 4
        Else
            MsgBox "Date inexistante!"
    End If
     
    End Sub
    A+

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 41
    Par défaut
    Bonjour
    Excusez-moi pour ma réponse tardive, mais j'ai été absent pendant une semaine et je n' ai pas pu voir votre réponse
    J'espère que vous comprendrez et encore mille excuses

    J'ai appliqué votre macro : C'est super que ce que vous avez écrit !.....
    Puis-je faire 2 observations :
    Puis-je vous demander, sans trop vous déranger,
    - activer la macro, car elle ne s'active pas pas automatiquement . Je dois la lancer en "manuel" il manque donc le code dans la feuille
    - la date recherchée se place dans la colonne précédente et la ligne 2 se "colorie" alors qu'elle ne doit pas

    Je vous rappelle que je suis un vrai débutant et que votre aide m'est très précieuse
    Je joins mon fichier avec votre macro
    Pouvez-vous la corriger et me renvoyer le fichier corrigé?
    Encore grand merci pour votre aide
    Cordialement
    JorisPhi

  8. #8
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Bonjour,
    Voici le fichier adapté en espérant que j'ai bien compris le souhait.

    A+

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 41
    Par défaut Recherche aff colonne
    Bonjour
    Vous m'avez très très bien compris
    Vous êtes le seul à avoir su conserver mes MFC
    Félicitations !......

    Sans trop vous demander et si cela ne vous occasionne pas trop de travail, Puis-je vous demander d'ajouter un MSGBOX "Date inexistante" lorsque qu'une date n'est pas trouvée car, il m'affiche "Erreur d'exécution"

    Encore un grand merci pour votre précieuse aide
    Bien à vous
    Jorisphi

  10. #10
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Bonjour,
    C'était prévu, j'ai juste fait une petite erreur dans le dimensionnement des variables, le plus simple est donc de changer le type de variable de 'Var1', ça évitera de revoir une partie du code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub RechDate()
    Dim Lig As Long, Col As Long
    Dim Var1 As Variant 'Mettre en Variant au lieu de Long
    ...
    Bonne continuation.

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 41
    Par défaut


    re-bonjour

    ça Marche !.......
    Super !......
    Encore un tout tout grand merci pour votre précieuse aide et votre patience avec moi

    A Bientôt
    Jorisphi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Boucle pour (moteur de) recherche dans plusieurs colonnes et affichage réponse
    Par Cenotik dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 20/04/2011, 00h47
  2. [VBA-E] Recherche dans une colonne
    Par snowkhan dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 03/03/2006, 14h21
  3. Réponses: 7
    Dernier message: 02/03/2006, 14h58
  4. affichage colonne par colonne
    Par tjoce dans le forum Langage
    Réponses: 1
    Dernier message: 02/11/2005, 18h19
  5. [VB.NET] [WinForms] [DataGrid][ArrayList] Affichage colonnes
    Par Misterburma dans le forum Windows Forms
    Réponses: 2
    Dernier message: 05/04/2005, 11h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo