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 :

macro enregistrée ne se réplique pas


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2014
    Messages : 19
    Par défaut macro enregistrée ne se réplique pas
    Bonsoir à tous,

    J'ai un petit soucis qui ne me laisse pas avancer. Je désire écrire un code avec la fonction find, et pour cela je m'aide de l'enregistreur de macro.
    j'enregistre ma macro, mais quand je veux la réutiliser, ca bug. j'arrive pas à savoir pourquoi. Voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Macro3()
    '
    ' Macro3 Macro
    '
     
    '
        Range("E5:AB5").Select
        Selection.Find(What:="29/01/2016", After:=ActiveCell, LookIn:=xlFormulas _
            , LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False).Activate
        Range("X5").Select
     
    End Sub
    quelqu'un aurait il une idée?
    merci à l'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Une solution possible

    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
     
    Sub RechercheDate()
     
        RepererDates CDate("29/01/2016"), Sheets("Feuil1").Range("E5:AB5")
     
    End Sub
     
    Sub RepererDates(ByVal ValeurRecherchee As Variant, ByVal AireDeRecherche As Range)
     
    Dim CelluleRecherchee As Range
     
            Set CelluleRecherchee = AireDeRecherche.Find(what:=ValeurRecherchee, LookIn:=xlValues, lookat:=xlWhole)
            If Not CelluleRecherchee Is Nothing Then
                    With CelluleRecherchee
                           .Select
                           ' MsgBox .Address
                    End With
            End If
            Set CelluleRecherchee = Nothing
     
    End Sub
    Cordialement.

  3. #3
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2016
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2016
    Messages : 102
    Par défaut Recherche de date dans une plage
    Bonjour,

    Je suppose que ton code génère une erreur 91... liée au fait qu'excel n'arrive pas à activer la cellule et pour cause, il ne doit pas la trouver... certainement à cause d'un problème de format de date.

    Même si l'enregistreur macro ne sait pas faire, il est conseillé de modifier le code de recherche (qques soit la recherche à effectuer d'ailleurs) en prévoyant le cas où il ne trouve pas.

    Si trouvé alors
    Pointer
    Sinon
    Msgerreur
    Finsi


    A l'image de ce que te suggérait Eric, un exemple de code qui fonctionne avec des dates en format "standard" soit "jj/mm/aaaa" à utiliser dans ta feuille et dans ton code VBA pour passer la valeur de date à trouver.

    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
     
    Option Explicit
     
    Sub ChercheDate()
    '
    Dim Madate As Date
     
        Madate = "28/02/2016"
     
        If Not Cells.Find(What:=Madate, LookIn:=xlValues _
            , LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            searchFormat:=False) Is Nothing Then
     
            Cells.Find(What:=Madate, After:=ActiveCell, LookIn:=xlValues _
            , LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            searchFormat:=False).Activate
     
        Else
     
            MsgBox Madate & " non trouvée."
     
        End If
     
    End Sub
    2e remarque : si tu utilises la méthode Find, n'hésites pas à bien détailler ts les arguments (LookAt:=, par exemple). En effet, si tu ne précises pas ce type d'argument, les arguments qui vont être utilisés par défaut à l'exécution seront les mêmes que ceux utilisés depuis la dernière recherche en passant par l'interface Excel (ou par une autre macro). Donc ce qui marche une fois ne marchera forcément à tous les coups si d'autres types de recherche sont entrepris entre-temps.

    Cordialement.

    Bruno

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2014
    Messages : 19
    Par défaut
    Bonjour,

    Merci pour votre aide les gars. J'ai finalement utilisé DateSerial pour montrer à Excel qu'il s'agit d'une donnée type date et puis j'ai mis tout ça dans la fonction replace, et la ça fonctionne très bien.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    ByVal ValeurRecherchee As Variant , donc cdate n'apporte rien
    Citation Envoyé par Eric KERGRESSE Voir le message
    Bonjour,

    Une solution possible

    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
     
    Sub RechercheDate()
     
        RepererDates CDate("29/01/2016"), Sheets("Feuil1").Range("E5:AB5")
     
    End Sub
     
    Sub RepererDates(ByVal ValeurRecherchee As Variant, ByVal AireDeRecherche As Range)
     
    Dim CelluleRecherchee As Range
     
            Set CelluleRecherchee = AireDeRecherche.Find(what:=ValeurRecherchee, LookIn:=xlValues, lookat:=xlWhole)
            If Not CelluleRecherchee Is Nothing Then
                    With CelluleRecherchee
                           .Select
                           ' MsgBox .Address
                    End With
            End If
            Set CelluleRecherchee = Nothing
     
    End Sub
    Cordialement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RepererDates format("29/01/2016","yyyy-mm-dd"), Sheets("Feuil1").Range("E5:AB5")

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

Discussions similaires

  1. Macro enregistrer sous
    Par lara008 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/08/2007, 14h15
  2. Réponses: 6
    Dernier message: 14/06/2007, 13h16
  3. Nouvel enregistrement si n'est pas dans liste
    Par Sami Xite dans le forum IHM
    Réponses: 18
    Dernier message: 01/03/2007, 16h09
  4. une macro "enregistrer donnée en cours"
    Par copainvince dans le forum Access
    Réponses: 14
    Dernier message: 19/01/2007, 16h54
  5. Macro qui ne s'exécute pas dans formulaire
    Par picatchou dans le forum Access
    Réponses: 10
    Dernier message: 18/09/2006, 17h27

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