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

Vue hybride

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

    Informations professionnelles :
    Activité : Étudiant

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

    Je souhaiterai créer un code permettant que quand j'ai fini de rentrer ma valeur dans la cellule B1 il me renvoi automatiquement dans la cellule A2, puis par la suite quand je rentre une valeur dans la cellule B2 et que j'appuis sur entrer il me renvois a la cellule A3, et ainsi de suite..

    Pensez-vous pouvoir m'aider svp ?

    Cordialement

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 62
    Par défaut
    OK, plus besoin de répondre j'ai la réponse..
    Voici le code:

    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)
    If Not Intersect(Target, Range("A:B")) Is Nothing Then
        If Target.Column = 1 Then
        Target.Offset(0, 1).Select
        End If
        If Target.Column = 2 Then
        Target.Offset(1, -1).Select
        End If
    End If
    End Sub
    Cordialement

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Ca pourrait être plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Intersect(Target, Range("A:B")) Is Nothing Then Exit Sub
        IIf(Target.Column = 1, Target.Offset(0, 1), Target.Offset(1, -1)).Select
    End Sub
    Voir même :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Intersect(Target, Range("A:B")) Is Nothing Then Exit Sub
        Target.Offset(Target.Column - 1, 3 - Target.Column * 2 ).Select
    End Sub

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 62
    Par défaut
    Oui c'est vrai haha, merci !

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour menhir
    interessant ton idée mais elle ne fonctionn pas pour"A"
    j'ai testé avec une autre formule avec "switch" et j'ai la meme erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Intersect(Target, Range("A:B")) Is Nothing Then Exit Sub
        IIf(Target.Column = 1, Target.Offset(0, 1), Target.Offset(1, -1)).Select
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Worksheet_Change(ByVal Target As Range)
    Set cel = Switch(Target.Column = 2, Target.Offset(1, -1), Target.Column = 1, Target.Offset(0, 1))
    cel.Select
    End Sub
    Nom : demo5.gif
Affichages : 250
Taille : 294,5 Ko
    j'ai pas d'explication si tu trouve fait passer
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    En VBA, lorsque l'on utilise IIf (ou Switch), toutes les expressions sont évaluées.
    Or, lorsque Target.Column égale à 1, Target.Offset(1, -1) renvoie une erreur.

    Donc, pour que la méthode fonctionne, il faut utiliser un If :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Worksheet_Change(ByVal Target As Range)
       If Intersect(Target, Range("A:B")) Is Nothing Then Exit Sub
       If Target.Column = 1 Then Target.Offset(0, 1).Select Else Target.Offset(1, -1).Select
    End Sub

  7. #7
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    1) à Franck
    2) histoire de ne pas faire comme tout le monde (d'où mon pseudo) -->>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Column = 2 Then
       Range("A:B")((Target.Row * 2) + 1).Select
     End If
    End Sub
    Patapé, je sors ...

  8. #8
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par pijaku Voir le message
    En VBA, lorsque l'on utilise IIf (ou Switch), toutes les expressions sont évaluées.
    Or, lorsque Target.Column égale à 1, Target.Offset(1, -1) renvoie une erreur.
    Bien vu.
    Pas évidente à trouver celle-là.

    Donc, pour que la méthode fonctionne, il faut utiliser un If :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Worksheet_Change(ByVal Target As Range)
       If Intersect(Target, Range("A:B")) Is Nothing Then Exit Sub
       If Target.Column = 1 Then Target.Offset(0, 1).Select Else Target.Offset(1, -1).Select
    End Sub
    Ou bien (juste histoire de m'entêter, le breton à la tête dure ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Intersect(Target, Range("A:B")) Is Nothing Then Exit Sub
        Target.Offset(IIf(Target.Column = 1, 0, 1), IIf(Target.Column = 1, 1, -1)).Select
    End Sub

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 15/03/2016, 13h22
  2. Conservation des Retours à la lignes entre VBA et Outlook
    Par DevBaldwin dans le forum VBA Access
    Réponses: 2
    Dernier message: 12/05/2011, 16h47
  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