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 :

Copier/coller d'une date dans la première cellule vide [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2013
    Messages : 25
    Points : 15
    Points
    15
    Par défaut Copier/coller d'une date dans la première cellule vide
    Bonjour,

    Je rencontre un soucis concernant le copier/coller d'une date dans la première cellule vide d'une colonne et ce, pour plusieurs lignes.
    J'ai joint à la discussion un fichier test qui vous permettra de comprendre.
    Pouvez-vous me donner votre avis.
    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
    Sub Test()
     
    For Ligne = 1 To 25 'nombre de ligne
    For colone = 2 To 5 'Nombre de colone sur lesquels on peut écrire
     
        If Cells(i, 1) < Date Then 'Si la date du contrôle est inférieure à la date du jour alors (1)
                If Cells(Ligne, colone).Value = Cells(Ligne, colone).End(xlToRight).Value Then 'Si la date de la ligne+colone = la date de la dernière colone de cette même ligne (2)
                Cells(Ligne, 1).Value = Cells(Ligne, 1).Value 'on ne fait rien
                Else 'Sinon (2)
                Cells(Ligne, 1).Select 'On selectionne
                Cells(Ligne, "A").End(xlToRight).Paste 'On colle la première cellule en dernière colone vide
                End If
        Else 'Sinon (1)
        Cells(Ligne, 1).Value = Cells(Ligne, 1).Value 'on ne fait rien
        End If
     
    Next Ligne
     
    End Sub
    Je vous remercie par avance

  2. #2
    Invité
    Invité(e)
    Par défaut bonjour,
    j'ai rien compris!

    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 Test()
     
    For Ligne = 1 To 25 'nombre de ligne
        For colone = 2 To 5 'Nombre de colone sur lesquels on peut écrire
     
            If Cells(Ligne, 1) < Date Then 'Si la date du contrôle est inférieure à la date du jour alors (1)
                    If Cells(Ligne, colone).Value <> Cells(Ligne, colone).End(xlToRight).Value Then 'Si la date de la ligne+colone = la date de la dernière colone de cette même ligne (2)
                      'On colle la première cellule en dernière colone vide
                       Cells(Ligne, Cells(Ligne, 1).End(xlToRight).Column + 1) = CDate(Cells(Ligne, 1))
                    End If
             End If
        Next
    Next
    MsgBox "Fin"
    End Sub

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2013
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par rdurupt Voir le message
    j'ai rien compris!
    Dans ma colone "A" de mon classeur Excel, je dispose de dates.

    La maccro que je souhaite réaliser est la suivante :

    Si la date en "A1" est supérieure à la date du jour alors on la copie dans la première cellule vide (ou la dernière cellule remplie +1) de la ligne : ça pourrait être "B1", puis "C1",... (tout en évitant les doublons)
    Si la date en "A1" est inférieure à la date du jour alors on fait rien.


    Puis on fait les autres lignes.
    Si la date en "A2" est supérieure à la date du jour alors on la copie dans la première cellule vide de la ligne : ça pourrait être "B2", puis "C2",...
    Si la date en "A2" est inférieure à la date du jour alors on fait rien.

    J'espère être plus compréhensible ...

  4. #4
    Invité
    Invité(e)
    Par défaut
    dis moi si ça gaz?
    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
    Sub Test()
    For Ligne = 1 To 25 'nombre de ligne
        For colone = 2 To 5 'Nombre de colone sur lesquels on peut écrire
            If CDate(Cells(Ligne, 1)) > Date Then 'Si la date du contrôle est inférieure à la date du jour alors (1)
                c = colone: If c > 2 Then c = c - 1
                If Cells(Ligne, 1) <> Cells(Ligne, c) And Trim("" & Cells(Ligne, colone)) = "" Then 'Si la date de la ligne+colone = la date de la dernière colone de cette même ligne (2)
                    'On colle la première cellule en dernière colone vide
                     If colone = 2 Then
                        Cells(Ligne, 2) = CDate(Cells(Ligne, 1))
                    Else
                        Cells(Ligne, Cells(Ligne, 1).End(xlToRight).Column + 1) = CDate(Cells(Ligne, 1))
                     End If
                End If
                If Cells(Ligne, 1) = Cells(Ligne, colone) Then Exit For
            End If
        Next
    Next
    MsgBox "Fin"
    End Sub

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2013
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    Ca gaz super bien Je te remercie beaucoup
    Je reviendrai peut être poser une question sur le sujet si j'ai pas compris certains éléments du code _

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2013
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    Bonjour,

    Je m'excuse de revenir sur un sujet déjà résolu mais je suis embêté à faire une macro proche de celle pour laquelle j'avais demandé de l'aide

    A partir de la macro disponible sur la page, j'aimerai faire en sorte que la date qui est copiée dans la dernière cellule non vide ne soit copiée que si une date n'a pas été écrite (manuellement) entre temps.


    Je vous remercie par avance.

  7. #7
    Invité
    Invité(e)
    Par défaut Bonjour,
    j'ai bien reçu ton message privé.
    mais comment définis tu ça.
    car une date c'est un date!
    Dernière modification par AlainTech ; 07/07/2014 à 20h07. Motif: Suppression de la citation inutile

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2013
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    [Je te remercie pour ta réactivité

    Je dispose d'une date (qui représente une action à entreprendre) et d'une tolérance (+/-) associée. Je souhaite que la macro recopie la date si on sort de la tolérance positive que si une date de l’intervalle [tolérance - ; tolérance +] n'est pas écrite (manuellement) dans la dernière ligne, puisque sinon (en fonctionnement normal et en tolérance respectée) la date sera écrite manuellement par l'utilisateur (moi).

    Pour la partie recopie si on sort de la tolérance positive, j'y suis parvenu mais je n'arrive pas à programmer le fait que la macro recherche si une date avait été écrite auparavant correspondant à l'intervalle défini ci-dessus. Je pense que la majeure partie du code que tu m'avais proposé permet cette programmation (je m'en suis donc servi de base) et je pense que le module est bon hormis ce problème, qui je pense est lié à la deuxième boucle if.

    Si tu peux me donner un conseil sur la fonction à utiliser, je suis preneur

    Je te remercie par avance.

  9. #9
    Invité
    Invité(e)
    Par défaut
    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 Test()
    For Ligne = 1 To 25 'nombre de ligne
        For colone = 2 To 5 'Nombre de colone sur lesquels on peut écrire
            If CDate(Cells(Ligne, 1)) > Date Then 'Si la date du contrôle est inférieure à la date du jour alors (1)
                c = colone: If c > 2 Then c = c - 1
                          If Cells(Ligne, 1) <> Cells(Ligne, c) And Trim("" & Cells(Ligne, colone)) = "" Then 'Si la date de la ligne+colone = la date de la dernière colone de cette même ligne (2)
                 'Tolérance de 30 jour < 31
                   If 0 < DateDiff("d", Cells(Ligne, 1), Cells(Ligne, c)) And DateDiff("d", Cells(Ligne, 1), Cells(Ligne, c)) < 31 Then Exit For
                    If 0 < DateDiff("d", Cells(Ligne, 1), Cells(Ligne, c)) And DateDiff("d", Cells(Ligne, 1), Cells(Ligne, colone)) < 31 Then Exit For
                    'On colle la première cellule en dernière colone vide
                     If colone = 2 Then
                        Cells(Ligne, 2) = CDate(Cells(Ligne, 1))
                    Else
                        Cells(Ligne, Cells(Ligne, 1).End(xlToRight).Column + 1) = CDate(Cells(Ligne, 1))
                     End If
                End If
                If Cells(Ligne, 1) = Cells(Ligne, colone) Then Exit For
            End If
        Next
    Next
    MsgBox "Fin"
    End Sub

  10. #10
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2013
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    Merci Sujet doublement résolu !!
    Par contre pourquoi avoir recopier deux fois la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If 0 < DateDiff("d", Cells(Ligne, 1), Cells(Ligne, c)) And DateDiff("d", Cells(Ligne, 1), Cells(Ligne, c)) < 31 Then Exit For
    If 0 < DateDiff("d", Cells(Ligne, 1), Cells(Ligne, c)) And DateDiff("d", Cells(Ligne, 1), Cells(Ligne, colone)) < 31 Then Exit For

  11. #11
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If 0 < DateDiff("d", Cells(Ligne, 1), Cells(Ligne, c)) And DateDiff("d", Cells(Ligne, 1), Cells(Ligne, c)) < 31 Then Exit For
     If 0 < DateDiff("d", Cells(Ligne, 1), Cells(Ligne, colone)) And DateDiff("d", Cells(Ligne, 1), Cells(Ligne, colone)) < 31 Then Exit For
    désolé mais quand on veut aidé et que l'on ne connait pas tous les tenant et aboutissant on ai prudent.

  12. #12
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2013
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    C'était une simple curiosité

    Je te remercie

  13. #13
    Invité
    Invité(e)
    Par défaut Bonjour,
    ce que j'ai voulu dire ces que tu utilise Cells(Ligne, c) et Cells(Ligne, colone) donc dans le doute moi je test le 2!

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

Discussions similaires

  1. Macro copier coller d'une plage dans un nouveau fichier Excel sous condition
    Par lapagaille dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/02/2014, 17h27
  2. [XL-2010] en vba copier coller avec une condition dans des classeurs différents
    Par will83177 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/02/2014, 17h38
  3. Réponses: 2
    Dernier message: 10/03/2013, 17h06
  4. [XL-2007] automatisation copier coller d'une feuille dans une autre
    Par luko6 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 22/04/2010, 10h26
  5. Réponses: 1
    Dernier message: 09/12/2008, 12h23

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