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

Excel Discussion :

Apprendre BDD excel


Sujet :

Excel

  1. #41
    Expert confirmé Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Points : 4 299
    Points
    4 299
    Par défaut
    Salut,

    Ton "ElseIf" peut être remplacé par un "else" pour la raison suivante :
    Ta condition initiale vérifie si la cellule est vide. On est d'accord
    Du coup, est il nécessaire de dire sinon, vérifie si est n'est pas vide ?

    Dans la mesure où il n'y a pas de verre à moitié vide ou à moitie plein. On peut se contenté d'un simple "Else"

    Enfin, pourquoi enlevé le exit sub ?
    Il est placé avant ... le end Sub.
    Comme on est devant la sortie, pourquoi dire à VBA de sortir ? Autant laisser la procédure aller jusqu'à la fin.

    Voili voilou ...
    Jérôme

    " Je pense donc je suis. Tu es donc j'apprends ". (GCM)

    Si ce message vous à aidé, merci de cliquer sur . Si ce message est résolu, cliquez sur .

  2. #42
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2018
    Messages : 61
    Points : 28
    Points
    28
    Par défaut
    Bonjour,

    Merci !

  3. #43
    Expert éminent sénior 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
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Calican Voir le message
    Mais du coup est ce que le programme s'attend a avoir autre chose après mon ElseIf si je le laisse ?
    Regarde mieux ma proposition : ce n'est pas un ElseIf que je te conseille de laisser mais un Else.
    Etant donné que la condition dans ton ElseIf est exactement l'opposée de celle du If dont il dépend, ça équivaut à un Else.
    Lire ça : https://msdn.microsoft.com/fr-fr/VBA...else-statement

    Ou par ce que c'est pas propre ?
    Ce n'est pas vraiment faux mais c'est inutilement compliqué.

    Et pourquoi retirer le Exit Sub ?
    Un Exit Sub sur l'avant dernière ligne d'un Sub, ça ne sert à rien.
    C'est comme indiquer le chemin de la poste à quelqu'un qui vient d'arriver devant la poste.

    L'Exit Sub n'est intéressant que si on veut interrompre une procédure sans cours sans faire la suite du code.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  4. #44
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2018
    Messages : 61
    Points : 28
    Points
    28
    Par défaut
    Re,


    Message de dernière minute.
    J'ai modifié mon code afin de demander si l'utilisateur est sur d'ecraser les données, mais il ne lance jamais le MsgBox avec Ok et annuler , quoi que je fasse au niveau des dates dans mon interface. il m'affiche juste que la date et introuvable quand elle n'est pas disponible mais pour regarder si la cellules a coter de myCell n'est pas vide rien ne ce passe.

    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
    71
    72
    73
     
     
    Private Sub Env_Don_Click()
     
    Dim madate As Date
    Dim ligne As Integer
    Dim oWksht As Worksheet
    Dim lastrow As Long
    Dim myCell As Range
    madate = CDate(Me.Date_Txt.Text)
     
    Sheets("Feuil1").Select
    Sheets("Feuil1").Unprotect "543210"
     
        Range("C6") = TextBox1.Value
        Range("C7") = TextBox2.Value
        Range("C8") = TextBox3.Value
        Range("C9") = TextBox4.Value
        Range("C10") = TextBox5.Value
        Range("C11") = TextBox6.Value
        Range("B32").Value = TextBox7.Text
        Range("G4") = Date_Txt.Text
        Range("C16") = TextBox8.Value
        Range("C17") = TextBox9.Value
        Range("C18") = TextBox10.Value
     
    Sheets("Feuil1").Protect "543210"
     
    Sheets("Feuil2").Visible = True
    Sheets("Feuil2").Select
     
    Set oWksht = Sheets("Feuil2")
     
    lastrow = oWksht.Range("A" & Rows.Count).End(xlUp).Row 'Rows.Count descend a la dernière ligne de la feuil1 plage A puis remonte avec .End(xlUp).row a la dernière ligne remplie et en prend la valeur
     
    Range("A1").Activate
     
    Set myCell = oWksht.Range("A14:A" & lastrow).Find(what:=madate, LookIn:=xlValues, _
            LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False)
     
            If myCell Is Nothing Then
     
            MsgBox ("Date incorrect.")
     
            ElseIf Not myCell.Offset(0, 1) = "" Then 'si la cellule a droite de la date n'est pas vide
     
     Select Case MsgBox("Ce rapport a déja été crée êtes vous sur de vouloir écraser les données", vbOKCancel, "Ecraser les données")
     
          Case vbOK
     
               ligne = myCell.Row 'Ligne de la date
    Sheets("Feuil2").Cells(ligne, 2).Value = TextBox1.Text 'Parcipant
    Sheets("Feuil2").Cells(ligne, 3).Value = TextBox2.Text 'Parcipant
    Sheets("Feuil2").Cells(ligne, 4).Value = TextBox3.Text 'Parcipant
    Sheets("Feuil2").Cells(ligne, 5).Value = TextBox4.Text 'Parcipant
    Sheets("Feuil2").Cells(ligne, 6).Value = TextBox5.Text 'Parcipant
    Sheets("Feuil2").Cells(ligne, 7).Value = TextBox6.Text 'Parcipant
    Sheets("Feuil2").Cells(ligne, 8).Value = TextBox7.Text 'commentaire
    Sheets("Feuil2").Cells(ligne, 9).Value = TextBox8.Text 'accident
    Sheets("Feuil2").Cells(ligne, 10).Value = TextBox9.Text 'accident
    Sheets("Feuil2").Cells(ligne, 11).Value = TextBox10.Text 'accident
     
          Case vbCancel
     
      End Select
     
    End If
     
    ActiveWindow.SelectedSheets.Visible = False
     
     
    End Sub

    Et merci pour ta réponse Menhir


    Edit : J'ai compris mon erreur il faut que je fusionne ça

    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
     
     
    ElseIf Not myCell Is Nothing Then
     
                ligne = myCell.Row 'Ligne de la date
     
    Sheets("Feuil2").Cells(ligne, 2).Value = TextBox1.Text 'Parcipant
    Sheets("Feuil2").Cells(ligne, 3).Value = TextBox2.Text 'Parcipant
    Sheets("Feuil2").Cells(ligne, 4).Value = TextBox3.Text 'Parcipant
    Sheets("Feuil2").Cells(ligne, 5).Value = TextBox4.Text 'Parcipant
    Sheets("Feuil2").Cells(ligne, 6).Value = TextBox5.Text 'Parcipant
    Sheets("Feuil2").Cells(ligne, 7).Value = TextBox6.Text 'Parcipant
    Sheets("Feuil2").Cells(ligne, 8).Value = TextBox7.Text 'commentaire
    Sheets("Feuil2").Cells(ligne, 9).Value = TextBox8.Text 'accident
    Sheets("Feuil2").Cells(ligne, 10).Value = TextBox9.Text 'accident
    Sheets("Feuil2").Cells(ligne, 11).Value = TextBox10.Text 'accident
    et ça

    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
     
            ElseIf Not myCell.Offset(0, 1) = "" Then 'si la cellule a droite de la date n'est pas vide
     
     Select Case MsgBox("Ce rapport a déja été crée êtes vous sur de vouloir écraser les données", vbOKCancel, "Ecraser les données")
     
          Case vbOK
     
               ligne = myCell.Row 'Ligne de la date
     
    Sheets("Feuil2").Cells(ligne, 2).Value = TextBox1.Text 'Parcipant
    Sheets("Feuil2").Cells(ligne, 3).Value = TextBox2.Text 'Parcipant
    Sheets("Feuil2").Cells(ligne, 4).Value = TextBox3.Text 'Parcipant
    Sheets("Feuil2").Cells(ligne, 5).Value = TextBox4.Text 'Parcipant
    Sheets("Feuil2").Cells(ligne, 6).Value = TextBox5.Text 'Parcipant
    Sheets("Feuil2").Cells(ligne, 7).Value = TextBox6.Text 'Parcipant
    Sheets("Feuil2").Cells(ligne, 8).Value = TextBox7.Text 'commentaire
    Sheets("Feuil2").Cells(ligne, 9).Value = TextBox8.Text 'accident
    Sheets("Feuil2").Cells(ligne, 10).Value = TextBox9.Text 'accident
    Sheets("Feuil2").Cells(ligne, 11).Value = TextBox10.Text 'accident
     
          Case vbCancel
     
      End Select
     
    End If

    Si il n'y a rien dans la base il ne va jamais executer le MsgBox je ne pourrais donc jamais y mettre les valeurs puisque le MsgBox ce lance seulement quand la cellule a côté de myCell n'est pas vide.

  5. #45
    Expert confirmé Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Points : 4 299
    Points
    4 299
    Par défaut
    Salut,

    Ce que tu as intérêt à faire pour comprendre, c'est de mettre un point d'arret dans ton code.

    A mon avis, sur cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            If myCell Is Nothing Then
    Pour mettre un point d'arret, place toi à gauche de la ligne, dans la zone grise et clic. Un gros point rouge doit apparaître.
    Exécute ton code et place ta souris sue les variables.

    Tu pourras ainsi voir quelles valeurs elles contiennent. Et ainsi comprendre pourquoi tu passes toujours dans le if et pas dans le else ...
    Jérôme

    " Je pense donc je suis. Tu es donc j'apprends ". (GCM)

    Si ce message vous à aidé, merci de cliquer sur . Si ce message est résolu, cliquez sur .

  6. #46
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2018
    Messages : 61
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par jerome.vaussenat Voir le message
    Salut,

    Ce que tu as intérêt à faire pour comprendre, c'est de mettre un point d'arret dans ton code.

    A mon avis, sur cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            If myCell Is Nothing Then
    Pour mettre un point d'arret, place toi à gauche de la ligne, dans la zone grise et clic. Un gros point rouge doit apparaître.
    Exécute ton code et place ta souris sue les variables.

    Tu pourras ainsi voir quelles valeurs elles contiennent. Et ainsi comprendre pourquoi tu passes toujours dans le if et pas dans le else ...

    J'ai fini par voir et Edit le post du dessus. J'ai compris pourquoi.


    Edit : Je l'ai ! ça fait sourire quand on galère pour rien et q'au final c'est débile.

    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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
     Private Sub Env_Don_Click()
     
    Dim madate As Date
    Dim ligne As Integer
    Dim oWksht As Worksheet
    Dim lastrow As Long
    Dim myCell As Range
    madate = CDate(Me.Date_Txt.Text)
     
    Sheets("Feuil1").Select
    Sheets("Feuil1").Unprotect "543210"
     
        Range("C6") = TextBox1.Value
        Range("C7") = TextBox2.Value
        Range("C8") = TextBox3.Value
        Range("C9") = TextBox4.Value
        Range("C10") = TextBox5.Value
        Range("C11") = TextBox6.Value
        Range("B32").Value = TextBox7.Text
        Range("G4") = Date_Txt.Text
        Range("C16") = TextBox8.Value
        Range("C17") = TextBox9.Value
        Range("C18") = TextBox10.Value
     
    Sheets("Feuil1").Protect "543210"
     
    Sheets("Feuil2").Visible = True
    Sheets("Feuil2").Select
     
    Set oWksht = Sheets("Feuil2")
     
    lastrow = oWksht.Range("A" & Rows.Count).End(xlUp).Row 'Rows.Count descend a la dernière ligne de la feuil1 plage A puis remonte avec .End(xlUp).row a la dernière ligne remplie et en prend la valeur
     
    Range("A1").Activate
     
    Set myCell = oWksht.Range("A14:A" & lastrow).Find(what:=madate, LookIn:=xlValues, _
            LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False)
     
            If myCell Is Nothing Then
     
            MsgBox ("Date incorrect.")
     
     
            ElseIf Not myCell.Offset(0, 1) = "" Then 'si la cellule a droite de la date n'est pas vide
     
     Select Case MsgBox("Ce rapport a déja été crée êtes vous sur de vouloir écraser les données", vbOKCancel, "Ecraser les données")
     
          Case vbOK
     
               ligne = myCell.Row 'Ligne de la date
     
    Sheets("Feuil2").Cells(ligne, 2).Value = TextBox1.Text 'Parcipant
    Sheets("Feuil2").Cells(ligne, 3).Value = TextBox2.Text 'Parcipant
    Sheets("Feuil2").Cells(ligne, 4).Value = TextBox3.Text 'Parcipant
    Sheets("Feuil2").Cells(ligne, 5).Value = TextBox4.Text 'Parcipant
    Sheets("Feuil2").Cells(ligne, 6).Value = TextBox5.Text 'Parcipant
    Sheets("Feuil2").Cells(ligne, 7).Value = TextBox6.Text 'Parcipant
    Sheets("Feuil2").Cells(ligne, 8).Value = TextBox7.Text 'commentaire
    Sheets("Feuil2").Cells(ligne, 9).Value = TextBox8.Text 'accident
    Sheets("Feuil2").Cells(ligne, 10).Value = TextBox9.Text 'accident
    Sheets("Feuil2").Cells(ligne, 11).Value = TextBox10.Text 'accident
     
          Case vbCancel
     
      End Select
     
      Else
     
                ligne = myCell.Row 'Ligne de la date
     
    Sheets("Feuil2").Cells(ligne, 2).Value = TextBox1.Text 'Parcipant
    Sheets("Feuil2").Cells(ligne, 3).Value = TextBox2.Text 'Parcipant
    Sheets("Feuil2").Cells(ligne, 4).Value = TextBox3.Text 'Parcipant
    Sheets("Feuil2").Cells(ligne, 5).Value = TextBox4.Text 'Parcipant
    Sheets("Feuil2").Cells(ligne, 6).Value = TextBox5.Text 'Parcipant
    Sheets("Feuil2").Cells(ligne, 7).Value = TextBox6.Text 'Parcipant
    Sheets("Feuil2").Cells(ligne, 8).Value = TextBox7.Text 'commentaire
    Sheets("Feuil2").Cells(ligne, 9).Value = TextBox8.Text 'accident
    Sheets("Feuil2").Cells(ligne, 10).Value = TextBox9.Text 'accident
    Sheets("Feuil2").Cells(ligne, 11).Value = TextBox10.Text 'accident
     
     
    End If
     
    ActiveWindow.SelectedSheets.Visible = False
     
     
    End Sub

    Voila !

    Par contre maintenant il est un peu lent pour m'afficher si la date est incorrect.

  7. #47
    Expert éminent sénior 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
    Points : 32 866
    Points
    32 866
    Par défaut
    Continuer à poser des questions dans une discussion marquée "Résolue", c'est une mauvaise idée.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  8. #48
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2018
    Messages : 61
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Continuer à poser des questions dans une discussion marquée "Résolue", c'est une mauvaise idée.
    Bonjour,

    Ah non mais c'est vraiment résolu c'était juste une remarque.
    Mais tout va bien.

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 3 PremièrePremière 123

Discussions similaires

  1. Convertir un fichier word en une BDD excel
    Par Kiefer_Sutherland dans le forum Excel
    Réponses: 11
    Dernier message: 01/09/2007, 13h40
  2. BDD Excel python et graphique , bref tout un programme :)
    Par Iria77 dans le forum Calcul scientifique
    Réponses: 3
    Dernier message: 24/08/2007, 15h24
  3. BDD Excel avec VB6
    Par RuDaï KiRi dans le forum VB 6 et antérieur
    Réponses: 26
    Dernier message: 27/06/2007, 19h15
  4. [Vba] BDD : Excel + Access + Vba
    Par Emcy dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/11/2005, 10h23
  5. Transformer une Bdd Excel en Bdd Access
    Par Golork dans le forum Bases de données
    Réponses: 2
    Dernier message: 04/08/2005, 16h40

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