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 :

Incrémentation de valeurs par message box


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Octobre 2019
    Messages : 2
    Par défaut Incrémentation de valeurs par message box
    Bonjour à tous,

    Avant de commencer, je préfère préciser que je démarre de presque 0 en VBA, et que j'ai quand même tenté de chercher des infos sur le net avant de venir ici. Toutefois, mon code ne fonctionne pas. J'imagine qu'il sera très simple pour ne serait-ce que des initiés.

    Dans ma feuille Excel, j'ai une colonne D avec une incrémentation de dates. Une colonne E avec une incrémentation de valeurs (associées aux dates). J'aimerais qu'un message box vienne incrémenter la première cellule non vide de la colonne D, idem pour la colonne E avec la valeur associée. Voici le code que j'ai écrit:

    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 Ajout_de_valeurs()
     
    Dim datepesée As String
    Dim poids As String
    Dim CellDate As Long
    Dim CellPoids As Long
     
    'défini la date de pesée par un message box
    datepesée = InputBox("Instruis la date de pesée", "Date de pesée", "jj/mm/aaaa")
    'défini le poids associé par un message box
    poids = InputBox("Et le poids associé?", "Poids", "75")
    'défini la dernière cellule non vide de la colonne D et lui ajoute 1 pour avoir la première cellule vide
    CellDate = Range("D1").End(xlDown).Row + 1
    'défini la dernière cellule non vide de la colonne E et lui ajoute 1 pour avoir la première cellule vide
    CellPoids = Range("E1").End(xlDown).Row + 1
     
    If datepesée <> "" Then
    Range(CellDate) = datepesée
    If poids <> "" Then
    Range(CellPoids) = poids
     
    End Sub
    Pouvez-vous me dire ce qui ne va pas?
    Je vous remercie par avance.

    Bonne journée

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par _V1nce_ Voir le message
    Bonjour,

    Plusieurs corrections à faire :

    S'il n'y a pas cellule non vide dans la colonne D en dessous de votre tableau, il vaut mieux tester la dernière ligne à partir du bas.
    Il est inutile de tester deux fois la dernière ligne.
    La notation pour les Range n'est pas correcte.
    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
     
    Sub Ajout_de_valeurs()
     
    Dim datepesée As String
    Dim poids As String
    Dim CellDate As Long
    'Dim CellPoids As Long
     
            datepesée = InputBox("Instruis la date de pesée", "Date de pesée", "jj/mm/aaaa")
            poids = InputBox("Et le poids associé?", "Poids", "75")
            'CellDate = Range("D1").End(xlDown).Row + 1
            CellDate = Range("D" & Rows.Count).End(xlUp).Row + 1
     
            'CellPoids = Range("E1").End(xlDown).Row + 1
            'If datepesée <> "" Then
            'Range(CellDate) = datepesée
            'If poids <> "" Then
            'Range(CellPoids) = poids
     
            If datepesée <> "" And poids <> "" Then
               Range("D" & CellDate) = datepesée
               Range("E" & CellDate) = poids
            End If
     
    End Sub

    Sinon, par principe, j'aurais associé l'onglet sur lequel je travaille, enlevé les caractères signés dans les variables, et mis la date du jour par défaut dans l'inputbox.

    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
     
    Sub Ajout_de_valeurs2()
     
    Dim DatePesee As String, Poids As String
    Dim DerniereLigneDate As Long
     
        DatePesee = InputBox("Instruis la date de pesée", "Date de pesée", Date)
        Poids = InputBox("Et le poids associé ?", "Poids", "75")
     
        With ActiveSheet
             DerniereLigneDate = .Cells(.Rows.Count, 4).End(xlUp).Row + 1
             If DatePesee <> "" And poids <> "" Then
                With .Cells(DerniereLigneDate, 4)
                     .Value = CDate(DatePesee)
                     .Offset(0, 1) = Val(Poids)
                End With
             End If
        End With
     
    End Sub

  3. #3
    Candidat au Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Octobre 2019
    Messages : 2
    Par défaut
    Bonjour,

    Merci pour votre retour, cela semble fonctionner.
    Juste une petite chose, quand une décimale est renseignée, excel considère le nombre comme du texte. Y a t-il une méthode pour forcer excel à le considérer comme un nombre?

    Bonne journée

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par _V1nce_ Voir le message
    Bonjour,

    Voir ma deuxième procédure.

Discussions similaires

  1. Réponses: 11
    Dernier message: 30/03/2018, 19h14
  2. Réponses: 6
    Dernier message: 02/01/2009, 17h23
  3. Valeur par défaut pour une input box
    Par beegees dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 29/12/2008, 15h54
  4. Récupérer la valeur du message box
    Par midotoon dans le forum ASP.NET
    Réponses: 4
    Dernier message: 03/06/2008, 12h22
  5. Réponses: 6
    Dernier message: 14/02/2006, 20h53

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