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 :

Sélection de cellule avec un critère en vba [XL-2000]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 20
    Points : 13
    Points
    13
    Par défaut Sélection de cellule avec un critère en vba
    Bonjour à tous,

    Dans mon fichier excel, j'ai deux feuilles :
    - sur "Feuil1", en H3 je saisie une date
    - sur "Feuil2, sur la colonne D, toutes les dates de l'année y sont inscrites (cellules D6 à D737).

    En utilisant une macro, je voudrais venir me positionner sur la cellule en Feuil2 qui correspondra à la date que j'aurai saisi en Feuil1...

    J'ai recherché sur le forum, essayé plusieurs formules mais je n'y arrive pas...

    Si quelqu'un voudrait bien me donner un petit coup de pouce, cela m'aiderait beaucoup.

    Merci d'avance pour vos lumières.

    Cordialement

  2. #2
    Membre habitué Avatar de gourmand
    Homme Profil pro
    dessinateur projeteur mécanique
    Inscrit en
    Avril 2011
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : dessinateur projeteur mécanique

    Informations forums :
    Inscription : Avril 2011
    Messages : 153
    Points : 163
    Points
    163
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.Worksheets("Feuil2").Cells(1, 1).Select
    te permet de collectionné une cellule et d'y allé directement

    apré tu peux fair une petit recherche pour trouvé les date identique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for i=1 to 9999
     
    if ActiveWorkbook.Worksheets("Feuil1").Cells(1, 1).Value = ActiveWorkbook.Worksheets("Feuil2").Cells(i, 1).Value then
    ActiveWorkbook.Worksheets("Feuil2").Cells(i, 1).Select
    next
    end if
    next i

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 20
    Points : 13
    Points
    13
    Par défaut
    Merci pour ta réponse très rapide.

    Mais j'ai encore un souci sur la formule :

    La ligne : ActiveWorkbook.Worksheets("Feuil2").Cells(i, 1).Select
    me renvoie une erreur 1004...

    Dans la feuille Feuil2, j'ai positionné les jours sur la colonne A

    Cordialement,

  4. #4
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Tu n'auras pas à sélectionner une cellule pour y travailler.

    L'exemple suivant permet de rechercher sur la colonne D de Feuil2 la date inscrite en H3 de Feuil1 et de montrer la ligne de cette date ainsi que la valeur de la cellule C sur la même ligne.

    Ce code permet de récupérer la première occurrence trouvée.
    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
    Sub RechDate()
    Dim LastLig As Long
    Dim Dte As Date
    Dim c As Range
     
     
    Dte = CDate(Sheets("Feuil1").Range("H3").Value)
    Debug.Print Day(Dte)
    With Sheets("Feuil2")
        LastLig = .Cells(.Rows.Count, "D").End(xlUp).Row
        Set c = .Range("D6:D" & LastLig).Find(Dte, LookIn:=xlValues)
        If Not c Is Nothing Then
            MsgBox c.Row
            MsgBox .Range("C" & c.Row)
            Set c = Nothing
        End If
    End With
    End Sub
    Sinon, si tu veux récupérer l'ensemble des lignes répondant au critère date, tu peux utiliser un simple filtre automatique.


    PS @Gourmand
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.Worksheets("Feuil2").Cells(i, 1).Select
    Cette ligne est fausse et génère une erreur (1004)
    On ne peut pas sélectionner une plage de cellule que si la feuille EST la feuille active.
    En plus, c'est pas la peine se sélectionner quoi que ce soit pour y travailler. Ce sont là les abc d'une bonne orientation vers vba.

  5. #5
    Membre habitué Avatar de gourmand
    Homme Profil pro
    dessinateur projeteur mécanique
    Inscrit en
    Avril 2011
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : dessinateur projeteur mécanique

    Informations forums :
    Inscription : Avril 2011
    Messages : 153
    Points : 163
    Points
    163
    Par défaut
    dsl pour l'erreur, je pensais que sa marcherais et merci pour l'info.

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 20
    Points : 13
    Points
    13
    Par défaut Sélection de cellule avec un critère en vba
    Bonjour,

    Merci pour tout ce temps pris pour ces réponses.

    Mais je n'arrive pas à sélectionner la cellule sur la feuil2 par rapport au critère date de la feuil1.
    Au final cela serait pour effectuer une copie à partir de la feuil1.

    Pour mieux comprendre, je joins le fichier (simplifié).
    Cordialement,
    Fichiers attachés Fichiers attachés

  7. #7
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Bonjour
    Tu n'as pas besoin de faire une formule en colonne D de feuil2 pour avoir les dates. simplement tu écris 1/1/2011 en D6 et tu double clique sur le petit carrée en bas à droite de la cellule. (l'incrémentation de la date sera faite jusqu'à la ligne de la dernière cellule remplie de la colonne C adjacente).

    Dès lors et sans se soucier du format des 2 dates en H3 de Feuil1 et en colonne D de feuil2, essaies ce 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
    Sub RechDate()
    Dim LastLig As Long
    Dim Dte As Date
    Dim c As Range
     
    Dte = CDate(Sheets("Feuil1").Range("H3").Value)
    With Sheets("Feuil2")
        LastLig = .Cells(.Rows.Count, "D").End(xlUp).Row
        Set c = .Range("D6:D" & LastLig).Find(Dte, LookIn:=xlFormulas)
        If Not c Is Nothing Then
            Sheets("Feuil1").Range("C7:I7").Copy c.Offset(0, 1)
            Set c = Nothing
        End If
    End With
    End Sub

  8. #8
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 20
    Points : 13
    Points
    13
    Par défaut
    Super

    Merci beaucoup Mercatog pour cette réponse
    Cela fonctionne à merveille.

    Juste une dernière faveur :
    J'ai compris dans l'ensemble, mais est-ce possible d'avoir une explication de ce code par ligne ?

    Encore merci à tous pour ce travail

  9. #9
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Code commenté (Je te cherche un lien)
    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
    Sub RechDate()
    Dim LastLig As Long
    Dim Dte As Date
    Dim c As Range
     
    'Dans Dte on récupère la date valide en H3 de Feuil1
    Dte = CDate(Sheets("Feuil1").Range("H3").Value)
    With Sheets("Feuil2")
        'Dans LastLig on récupère la dernière ligne remple de la colonne D de Feuil2
        LastLig = .Cells(.Rows.Count, "D").End(xlUp).Row
        'On cherche Dte
        Set c = .Range("D6:D" & LastLig).Find(Dte, LookIn:=xlFormulas)
        'Si la date est trouvée
        If Not c Is Nothing Then
            'On copie C7:I7 de Feuil1 vers la cellule c de la ligne trouvée, décalée d'une colonne vers la droite
            Sheets("Feuil1").Range("C7:I7").Copy c.Offset(0, 1)
            'La ligne précédente peut être écrite comme ceci, avec c.Row est la ligne de c (cellule trouvée)
            'Sheets("Feuil1").Range("C7:I7").Copy .range("E" & c.Row)
            Set c = Nothing
        End If
    End With
    End Sub

  10. #10
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 20
    Points : 13
    Points
    13
    Par défaut
    Merci beaucoup pour ces infos
    Bonne continuation pour nos futures questions, nous les amateurs...

    Cordialement,

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/04/2015, 12h05
  2. compter le nb de cellules avec plusieurs critères
    Par markym dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 04/09/2014, 10h44
  3. Réponses: 6
    Dernier message: 26/08/2013, 11h56
  4. trouver le nombre de cellules avec plusieurs critères
    Par nadyves dans le forum Conception
    Réponses: 2
    Dernier message: 25/01/2013, 08h19
  5. [VBA-E] Copier une plage de cellules avec critère
    Par jfamiens dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 13/06/2006, 16h34

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