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 :

Saisie des usf sur une même ligne [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    salarié
    Inscrit en
    Janvier 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : salarié
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 24
    Points : 26
    Points
    26
    Par défaut Saisie des usf sur une même ligne
    Bonjour,

    Je souhaite automatiser la saisie d'un document, afin d'uniformiser le contenu des cellules, pour améliorer les extractions.

    Pour celà, j'ai automatisé une vérification à la fin de la saisie, et je me retrouve face à un problème :

    Si une des cellules d'une ligne est déjà occupée, ça enregistre automatiquement la saisie sur la cellule du dessous.

    Je ne vois pas trop comment faire pour :
    Contrôler que la ligne est entièrement vide.
    Enregistrer sur cette ligne toute la saisie en cours.

    Voici le code que j'utilise actuellement.

    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    Private Sub enregistrer_Click()
        ThisWorkbook.Save
     
        If Me.Conseiller = "" Then
            MsgBox "Le champ Conseiller est obligatoire"
            Me.Conseiller.SetFocus
            Exit Sub
        Else
        InsMot = Worksheets("Injustifié").Range("A65536").End(xlUp).Row + 1
        Worksheets("Injustifié").Range("A" & InsMot).Value = UserForm1.Conseiller.Value
        UserForm1.Conseiller.Value = ""
        End If
     
        If Me.DateZone = "" Then
            MsgBox "Le champ Date est obligatoire"
            Me.DateZone.SetFocus
            Exit Sub
        Else
        InsMot = Worksheets("Injustifié").Range("B65536").End(xlUp).Row + 1
        Worksheets("Injustifié").Range("B" & InsMot).Value = UserForm1.DateZone.Value
        UserForm1.DateZone.Value = ""
        End If
     
        If Me.Telephone = "" Then
            MsgBox "Le champ Telephone est obligatoire"
            Exit Sub
        Else
        InsMot = Worksheets("Injustifié").Range("C65536").End(xlUp).Row + 1
        Worksheets("Injustifié").Range("C" & InsMot).Value = UserForm1.Telephone.Value
        UserForm1.Telephone.Value = ""
        End If
     
        If Me.service = "" Then
            MsgBox "Le champ Service est obligatoire"
            Exit Sub
        Else
        InsMot = Worksheets("Injustifié").Range("D65536").End(xlUp).Row + 1
        Worksheets("Injustifié").Range("D" & InsMot).Value = UserForm1.service.Value
        UserForm1.service.Value = ""
        End If
     
        If Me.Injustifie = "" Then
            MsgBox "Le champ Cause Injustifié est obligatoire"
            Me.Injustifie.SetFocus
            Exit Sub
        Else
        InsMot = Worksheets("Injustifié").Range("E65536").End(xlUp).Row + 1
        Worksheets("Injustifié").Range("E" & InsMot).Value = UserForm1.Injustifie.Value
        UserForm1.Injustifie.Value = ""
        End If
     
     
        InsMot = Worksheets("Injustifié").Range("F65536").End(xlUp).Row + 1
        Worksheets("Injustifié").Range("F" & InsMot).Value = UserForm1.N1_Precision.Value
        UserForm1.N1_Precision.Value = ""
     
        InsMot = Worksheets("Injustifié").Range("G65536").End(xlUp).Row + 1
        Worksheets("Injustifié").Range("G" & InsMot).Value = UserForm1.Log_Anonyme.Value
        UserForm1.Log_Anonyme.Value = ""
     
        InsMot = Worksheets("Injustifié").Range("H65536").End(xlUp).Row + 1
        Worksheets("Injustifié").Range("H" & InsMot).Value = UserForm1.Site.Value
        UserForm1.Site.Value = ""
     
        InsMot = Worksheets("Injustifié").Range("I65536").End(xlUp).Row + 1
        Worksheets("Injustifié").Range("I" & InsMot).Value = UserForm1.Commentaire.Value
        UserForm1.Commentaire.Value = ""
     
        ThisWorkbook.Save
    End Sub
    A chaque usf, un contrôle est exécuté sur la colonne concernée, et enregistre l'usf sur la cellule vide suivante.

    Il faudrait certainement vérifier une ligne plutôt qu'une colonne, mais je ne vois pas la solution.

    Cordialement, Jérôme D

  2. #2
    Membre régulier
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Octobre 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2011
    Messages : 46
    Points : 107
    Points
    107
    Par défaut
    Bonjour,

    Pourquoi ne pas écrire quand tous les champs sont remplis ?

    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
     
    Private Sub enregistrer_Click()
        ThisWorkbook.Save
     
        If Me.Conseiller = "" Then
            MsgBox "Le champ Conseiller est obligatoire"
            Me.Conseiller.SetFocus
        ElseIf Me.DateZone = "" Then
            MsgBox "Le champ Date est obligatoire"
            Me.DateZone.SetFocus
        ElseIf Me.Telephone = "" Then
            MsgBox "Le champ Telephone est obligatoire"
    	Me.Telephone.SetFocus
        ElseIf Me.service = "" Then
            MsgBox "Le champ Service est obligatoire"
    	Me.service.SetFocus
        ElseIf Me.Injustifie = "" Then
            MsgBox "Le champ Cause Injustifié est obligatoire"
            Me.Injustifie.SetFocus
        Else
    	InsMot = Worksheets("Injustifié").Range("A65536").End(xlUp).Row + 1
    	Worksheets("Injustifié").Range("A" & InsMot).Value = UserForm1.Conseiller.Value
    	UserForm1.Conseiller.Value = ""
    	Worksheets("Injustifié").Range("B" & InsMot).Value = UserForm1.DateZone.Value
    	UserForm1.DateZone.Value = ""
    	Worksheets("Injustifié").Range("C" & InsMot).Value = UserForm1.Telephone.Value
    	UserForm1.Telephone.Value = ""
    	Worksheets("Injustifié").Range("D" & InsMot).Value = UserForm1.service.Value
    	UserForm1.service.Value = ""
    	Worksheets("Injustifié").Range("E" & InsMot).Value = UserForm1.Injustifie.Value
    	UserForm1.Injustifie.Value = ""
    	Worksheets("Injustifié").Range("F" & InsMot).Value = UserForm1.N1_Precision.Value
    	UserForm1.N1_Precision.Value = ""
    	Worksheets("Injustifié").Range("G" & InsMot).Value = UserForm1.Log_Anonyme.Value
    	UserForm1.Log_Anonyme.Value = ""
    	Worksheets("Injustifié").Range("H" & InsMot).Value = UserForm1.Site.Value
    	UserForm1.Site.Value = ""
    	Worksheets("Injustifié").Range("I" & InsMot).Value = UserForm1.Commentaire.Value
    	UserForm1.Commentaire.Value = ""
        End If
     
        ThisWorkbook.Save
    End Sub
    Comme ça on remplit toute la ligne, à moins que je n'ai pas saisi tous les contrôles à faire.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    salarié
    Inscrit en
    Janvier 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : salarié
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 24
    Points : 26
    Points
    26
    Par défaut Problème résolu
    Bonjour enernaej,

    Effectivement, ça fonctionne !

    Mon souci venait du fait qu'une des colonnes n'était complétée qu'occasionnellement.
    Mais la première colonne est complétée obligatoirement, celà reprend donc la même ligne.

    Merci pour ce bout de code, il m'est très utile (et me permet de comprendre encore un peu la logique de programmation).

    Cordialement, Jérôme D

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

Discussions similaires

  1. Mettre des infos sur une même ligne
    Par louraluy dans le forum Général VBA
    Réponses: 1
    Dernier message: 10/06/2015, 11h37
  2. [XL-2013] Script pour mettre des données sur une même ligne
    Par initial32 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 09/12/2014, 13h45
  3. Comment avoir des div sur une même ligne sans utiliser float ?
    Par Sergejack dans le forum Balisage (X)HTML et validation W3C
    Réponses: 10
    Dernier message: 13/10/2007, 15h31
  4. Aligner des images sur une même ligne
    Par cdevl32 dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 08/10/2007, 03h13
  5. 2 éléments sur une même ligne
    Par ben_iap dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 24/11/2004, 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