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 :

Retour à la ligne [VBA]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club Avatar de pite0611
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 62
    Points : 40
    Points
    40
    Par défaut Retour à la ligne [VBA]
    Bonjour,

    Je souhaite créer un programme un peu spécial, certes mais qui m'aiderai grandement...
    J'aimerai créer un programme qui retourne a la colonne A quand jecris dans la colonne E MAIS qui retourne dans une cellule vide (où il n'y a rien d'ecrit).. voici une image pour mieux comprendre:

    Le programme pour le retour a la ligne simple est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        If Target.Column = 5 Then
                 'Fait le retour a la ligne en colonne E quand on entre une valeur dans la colonne E
                    Target.Offset(1, -4).Select
        End If
    Pouvez-vous m'aider, je ne sais pas si ce que je demande est possible..

    CordialementNom : Sans titre.png
Affichages : 545
Taille : 31,0 Ko

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    983
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 983
    Points : 1 030
    Points
    1 030
    Billets dans le blog
    36
    Par défaut
    Je doute que tu sois dans la bonne rubrique car ta question concerne de l’Excel et non de l’Access

  3. #3
    Membre du Club Avatar de pite0611
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 62
    Points : 40
    Points
    40
    Par défaut
    OK, problème réglé !

    Voici la réponse à mon problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Lig As Long
    If Not Intersect(Target, Columns("E:E")) Is Nothing Then
    Lig = 1 
    Do While Not IsEmpty(Range("A" & Lig))
        Lig = Lig + 1
    Loop
    Range("A" & Lig).Select
    End If
    End Sub

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    983
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 983
    Points : 1 030
    Points
    1 030
    Billets dans le blog
    36
    Par défaut
    Une autre solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        If Target.Column = 2 Then '-->>> Colonne B mais à adapter !
            If Range("A1") = "" Then '-->>> Car .Find commence la recherche par défaut après la 1ère cellule de la colonne
                Range("A1").Select
            Else
                Columns(1).Find(What:="", LookIn:=xlValues, SearchOrder:=xlByRows, SearchDirection:=xlNext).Select
            End If
        End If
     
    End Sub

  5. #5
    Membre du Club Avatar de pite0611
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 62
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par informer Voir le message
    Je doute que tu sois dans la bonne rubrique car ta question concerne de l’Excel et non de l’Access
    Oui cependant cela reste du VBA !

  6. #6
    Membre du Club Avatar de pite0611
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 62
    Points : 40
    Points
    40
    Par défaut
    Merci de l'autre solution, je pourrais l'utiliser par la suite

  7. #7
    Membre du Club Avatar de pite0611
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 62
    Points : 40
    Points
    40
    Par défaut
    J'ai un problème qui est survenue et je ne le comprend pas pouvez-vous m'aider ?

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        If Target.Column = 1 Then
        'Ecris la dâte actuelle dans la colonne G apres avoir scanner en colonne A
            Cells(Target.Row, 7).Value = Date
        End If
     
        If Target.Column = 4 Then
        'Ecris lheure actuelle dans la colonne D apres avoir scanner le START
            Cells(Target.Row, 4).Value = Time()
        End If
     
        If Target.Column = 5 Then
        'Ecris lheure actuelle dans la colonne E apres avoir scanner le END
            Cells(Target.Row, 5).Value = Time()
        End If
     
        If Not Application.Intersect(Target, Range("E:E")) Is Nothing Then
        'Permet la soustraction des heures du debut et de fin
            Target.Offset(0, 1) = Format(Target.Offset(0, -1).Value - Target.Value, "hh:mm:ss")
        End If
     
        If Not Intersect(Target, Range("A:D")) Is Nothing Then
     
                 If Target.Column = 1 Then
                 'Permet de passer a la cellule suivante (TAB) dans la colonne A
                     Target.Offset(0, 1).Select
                 End If
        End If
     
        If Target.Column = 4 Then '-->>> Colonne B mais à adapter !
        If Range("A1") = "" Then '-->>> Car .Find commence la recherche par défaut après la 1ère cellule de la colonne
            Range("A1").Select
        Else
            Columns(1).Find(What:="", LookIn:=xlValues, SearchOrder:=xlByRows, SearchDirection:=xlNext).Select
        End If
        End If
     
        Dim Lig As Long
            If Not Intersect(Target, Columns("E:E")) Is Nothing Then
            Lig = 1
                Do While Not IsEmpty(Range("A" & Lig))
                Lig = Lig + 1
        Loop
        Range("A" & Lig).Select
        End If
     
    End Sub
    Images attachées Images attachées   

  8. #8
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    983
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 983
    Points : 1 030
    Points
    1 030
    Billets dans le blog
    36
    Par défaut
    Citation Envoyé par pite0611 Voir le message
    Oui cependant cela reste du VBA !
    Certes mais le vba développé pour Excel lui est spécifique et beaucoup d’objets avec leurs propriétés et méthodes n’existent pas dans Access.

    Il existe par ailleurs une rubrique Excel/vba dédiée et dont les contributeurs sont plus spécialisés sur les problématiques Excel.

    Poster sa question sur la rubrique adaptée permet d’obtenir des solutions plus rapides.

  9. #9
    Membre du Club Avatar de pite0611
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 62
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par informer Voir le message
    Certes mais le vba développé pour Excel lui est spécifique et beaucoup d’objets avec leurs propriétés et méthodes n’existent pas dans Access.

    Il existe par ailleurs une rubrique Excel/vba dédiée et dont les contributeurs sont plus spécialisés sur les problématiques Excel.

    Poster sa question sur la rubrique adaptée permet d’obtenir des solutions plus rapides.
    Autant pour moi je nesavais pas, merci.

  10. #10
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    983
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 983
    Points : 1 030
    Points
    1 030
    Billets dans le blog
    36
    Par défaut
    Une méthode pour faciliter le debuggage

    • Fais un copier / coller du code à debugger dans une fonction genre fonctionDeTest
    • Supprime le code de la fonction d’origine
    • Place un appel de fonctionDeTest en tout début de ta fonction appelante et ecris après exit sub



    Vois ensuite ce qui se passe

  11. #11
    Membre du Club Avatar de pite0611
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 62
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par informer Voir le message
    Une méthode pour faciliter le debuggage

    • Fais un copier / coller du code à debugger dans une fonction genre fonctionDeTest
    • Supprime le code de la fonction d’origine
    • Place un appel de fonctionDeTest en tout début de ta fonction appelante et ecris après exit sub



    Vois ensuite ce qui se passe
    Je comprend pas quand tu dis "Place un appel de fonctionDeTest en tout début de ta fonction appelante"

  12. #12
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    983
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 983
    Points : 1 030
    Points
    1 030
    Billets dans le blog
    36
    Par défaut
    Dans ton cas la,fonction appelante est worksheet_change

  13. #13
    Membre du Club Avatar de pite0611
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 62
    Points : 40
    Points
    40
    Par défaut
    tu m'as perdu

  14. #14
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    983
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 983
    Points : 1 030
    Points
    1 030
    Billets dans le blog
    36
    Par défaut
    Tu copies le code que je t’ai donné dans fonctionDeTest que tu as crée après worksheet_change
    Tu écris en premier ligne dans worksheet_change
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    fonctionDeTest
    Exit sub

  15. #15
    Membre du Club Avatar de pite0611
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 62
    Points : 40
    Points
    40
    Par défaut
    Cela ne fait rien du tout
    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
     fonctionDeTest
    Exit Sub
       If Target.Column = 4 Then '-->>> Colonne B mais à adapter !
        If Range("A1") = "" Then '-->>> Car .Find commence la recherche par défaut après la 1ère cellule de la colonne
            Range("A1").Select
        Else
            Columns(1).Find(What:="", LookIn:=xlValues, SearchOrder:=xlByRows, SearchDirection:=xlNext).Select
        End If
        End If
     
        Dim Lig As Long
            If Not Intersect(Target, Columns("E:E")) Is Nothing Then
            Lig = 1
                Do While Not IsEmpty(Range("A" & Lig))
                Lig = Lig + 1
        Loop
        Range("A" & Lig).Select
        End If

  16. #16
    Membre du Club Avatar de pite0611
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 62
    Points : 40
    Points
    40
    Par défaut
    Ok, tout d'abord merci de ton aide apportée, je n'ai pas tout à fait pigé ce que t'essayait de ma faire comprendre mais j'ai réussi à répondre à ma question par moi même !
    Voici le code pour ceux que ça peut aider
    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
     Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Lig As Long
    If Target.Columns.Count = Application.Columns.Count Then 'Si j'insère une ligne, alors [...]
    Exit Sub ' [...] je quitte ma macro
    End If 'Sinon je lance ma macro
    If Not Intersect(Target, Columns("E:E")) Is Nothing Then 'Si j'entre une valeur en colonne E alors
    Lig = 1
    Do While Not IsEmpty(Range("A" & Lig)) 'retour à la ligne colonne A
        Lig = Lig + 1
    Loop
    Range("A" & Lig).Select
    End If
    If Not Intersect(Target, Columns("D:D")) Is Nothing Then 'Si j'entre une valeur en colonne D alors
    Lig = 1
    Do While Not IsEmpty(Range("A" & Lig)) 'retour à la ligne colonne A
        Lig = Lig + 1
    Loop
    Range("A" & Lig).Select
    End If
    End Sub

  17. #17
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    983
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 983
    Points : 1 030
    Points
    1 030
    Billets dans le blog
    36
    Par défaut
    Mon code place le curseur dans la première cellule vide de la colonne A. Après à toi de voir ce que tu veux y affecter.

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

Discussions similaires

  1. Retour à la ligne [VBA]
    Par pite0611 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 31/05/2018, 18h24
  2. Réponses: 6
    Dernier message: 15/03/2016, 13h22
  3. [XL-2003] Forcer le retour à la ligne (vba): contenu d'une cellule issue d'un TCD
    Par Chagui dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/04/2011, 01h10
  4. Gérer les retour à la ligne avec VBA (marge de droite)
    Par beegees dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/09/2008, 18h33
  5. Retour à la ligne dans Zone de texte. Via VBA
    Par GuidoBrasletti dans le forum Access
    Réponses: 2
    Dernier message: 19/05/2006, 11h56

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