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 :

Retrouver une date dans une liste


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Février 2011
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 60
    Points : 44
    Points
    44
    Par défaut Retrouver une date dans une liste
    Bonjour tout le monde
    cela fait 2 jour que je piétine sur un problème de date et je vous appelle donc à mon secours
    En feuil1 cellule A1 une date et en B1 des données associées à cette date
    En Feuil2 colonne A:A une liste de dates et en B:B les donées associées

    Mon problème:
    Si la date de Feuil1 est déjàa présente dans Feuil2 afficher un message d'erreur
    Si la date Feuil1 n'est pas présente en Feuil2 copier cetee date en fin de liste et copier également les données associées

    Si quelqu'un peut m'aider pour ce code je lui en serait reconnaissant
    Merci d'avance et bonne journée à tous

  2. #2
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Copier()
    Dim DerLig As Long
        With Worksheets("Feuil2")
            DerLig = .Range("A" & Rows.Count).End(xlUp).Row
            If Application.CountIf(.Range("A1:A" & DerLig), Worksheets("Feuil1").Range("A1").Value) > 0 Then
                MsgBox "Cette date est déjà présente dans la feuille2"
            Else
                Worksheets("Feuil1").Range("A1").Resize(1, 2).Copy .Range("A" & DerLig + 1)
                MsgBox "Date et données associées enregistrées"
            End If
        End With
    End Sub
    Cordialement.

  3. #3
    Membre actif
    Homme Profil pro
    Technicien Méthodes
    Inscrit en
    Mars 2013
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2013
    Messages : 128
    Points : 269
    Points
    269
    Par défaut
    Bonjour,

    Voici un bout de code qui devrait répondre à tes attentes :

    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 TestDate()
     
        Dim CellATester As Range
        Dim DateTest As Date
        Dim DerniereLigne As Integer
     
        DateTest = Sheets("Feuil1").Range("A1")
        DerniereLigne = Sheets("Feuil2").Range("A65536").End(xlUp).Row
        Set CellATester = Sheets("feuil2").Range("A1:A" & DerniereLigne)
     
        For Each cel In CellATester
            If DateTest = cel Then
                MsgBox "Date déja présente"
                Exit Sub
            End If
        Next
     
        Sheets("feuil2").Range("A" & DerniereLigne + 1) = DateTest
        Sheets("feuil2").Range("B" & DerniereLigne + 1) = Sheets("feuil1").Range("B1")
    msgbox "Données enregistrées
     
    End Sub

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    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
    Sub TestDate()
     
        Dim CellATester As Range
        Dim DateTest As Date
        Dim DerniereLigne As Integer
     
        DateTest = Sheets("Feuil1").Range("A1")
        Set CellATester = Sheets("feuil2").Columns("A:A")
    On Error Resume Next
    Debug.Print CellATester.Find(DateTest).Row
    If Err = 0 Then
       MsgBox "Date déja présente"
        Exit Sub
    End If
      On Error GoTo 0
      Dim R As Long
     R = Sheets("feuil2").Range("A1").CurrentRegion.Rows.Count + 1
     
        Sheets("feuil2").Range("A" & R) = DateTest
        Sheets("feuil2").Range("B" & R) = Sheets("feuil1").Range("B1")
    MsgBox "Données enregistrées"
     
    End Sub
    Dernière modification par Invité ; 06/03/2013 à 13h09.

  5. #5
    Membre actif
    Homme Profil pro
    Technicien Méthodes
    Inscrit en
    Mars 2013
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2013
    Messages : 128
    Points : 269
    Points
    269
    Par défaut
    Bonjour rdurupt,

    Pourrais tu m'éclairer sur les changement que tu as apporté au code que j'ai proposé, je ne saisis pas la "valeur ajoutée" des modifications.

    Est ce plus rapide, ou plus "costaud" pour la gestion des erreurs, désolé si je ne saisis pas la subtilité.

    Bonne journée

    Cdt

  6. #6
    Membre du Club
    Inscrit en
    Février 2011
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 60
    Points : 44
    Points
    44
    Par défaut
    merci pour vos 3 propositions

  7. #7
    Invité
    Invité(e)
    Par défaut
    bonjour Guiiand,
    J’utilise la même méthode qu'Excel quand tu recherches une valeur dans une colonne.
    C’est plus rapide mais ça génère une erreur quand la valeur n’est pas trouvée d’où le On Error Resume Next
    Images attachées Images attachées  

  8. #8
    Membre actif
    Homme Profil pro
    Technicien Méthodes
    Inscrit en
    Mars 2013
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2013
    Messages : 128
    Points : 269
    Points
    269
    Par défaut
    Mes yeux ne voyaient pas le .Find

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

Discussions similaires

  1. [MySQL] insérer une date dans une table dans un format compréhensible
    Par laurentSc dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 16/08/2014, 11h10
  2. insérer une date dans une table dans un format compréhensible
    Par laurentSc dans le forum Langage SQL
    Réponses: 5
    Dernier message: 08/08/2014, 16h31
  3. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  4. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48
  5. Inserer une date d'une table dans une autre table
    Par petitetre dans le forum Langage SQL
    Réponses: 8
    Dernier message: 18/04/2007, 20h16

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