XL 2016 Tester une entrée dans BDD

pompaero

XLDnaute Impliqué
Bonjour le forum,

Je suis à la recherche d'un complément de code afin de vérifier si une entrée existe dans la base de données avant d'enregistrer.
J'essai de créer un suivi de différent compteur ou je suis arrivé à faire le code d'enregistrement et mon soucis est de pourvoir vérifier dans la feuille "Mvt compteur" la date en colonne B et le véhicule en colonne D avant enregistrement.
Si les items existe alors on ne fait rien sinon
on enregistre les items.
Pourriez vous m'aider à améliorer mon code, svp ? merci

Cdlt
pompaero
 

Pièces jointes

  • PompaeroV0.xlsm
    56.1 KB · Affichages: 23

ChTi160

XLDnaute Barbatruc
Bonjour pompaero
Bonjour le fil ,le Forum
question:
tu dis :
vérifier dans la feuille "Mvt compteur" la date en colonne B et le véhicule en colonne D avant enregistrement
la création d'une entrée, se fait à partir d'ou Userform (Bouton création) ou Feuille "Mvt compteur"(Bouton valider Compteur)
EDIT :
j'ai compris soit depuis "Mvt compteur"
n'y a t'il pas une erreur quant a la référence
VB:
If .Range("B11") <> "" Then
"B11" étant la ligne d’entête
puis
VB:
 Sheets("Mvt compteur").Range("B11") = CDate(Range("C4").Value)
merci par avance
jean marie
 
Dernière édition:

cathodique

XLDnaute Barbatruc
Bonsoir pompaero, ChTi160,

J'ai jeté un coup d’œil à ton fichier.
vérifier dans la feuille "Mvt compteur" la date en colonne B et le véhicule en colonne D avant enregistrement
tu veux faire une vérification préalable à l'enregistrement. Cependant dans ton fichier, pour la même date et pour le même véhicule, tu as plusieurs enregistrements. Explique-nous?

pour un couple (date, véhicule) il ne peut y avoir qu'une seule ligne. Or, dans ton fichier il y en a plusieurs.

Bonne soirée.
un essai
VB:
'bouton Valider compteur
Private Sub CommandButton1_Click()
   Dim dlt As Integer, Ddate As Date, Vehicule As String, i As Integer

   With Sheets("Mvt compteur")
      If .Range("E5") < .Range("E10") Then
         MsgBox ("Kilométrage incorrect !!!")
         .Range("E5") = "": .Range("E5").Select
         Exit Sub
      End If
      If .Range("E6") < .Range("F10") Then
         MsgBox ("Heure chassis incorrect !!!")
         .Range("E6") = "": .Range("E6").Select
         Exit Sub
      End If
      If .Range("E7") < .Range("G10") Then
         MsgBox ("Heure pompe incorrect !!!")
         .Range("E7") = "": .Range("E7").Select
         Exit Sub
      End If
      '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
      'verification
      Ddate = CDate(.Range("c4").Value): Vehicule = .Range("c6").Value

      dlt = .Range("B" & Rows.Count).End(xlUp).Row
      For i = 12 To dlt
         If .Range("B" & i) = Ddate And .Range("D" & i) = Vehicule And .Range("F" & i) = .Range("E5") Then
            MsgBox "Existe déjà!"
            Exit Sub
         End If
      Next i
      ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
      'controle si il y a toutes les informations
      If .Range("C4") = "" Or .Range("E5") = "" Or .Range("C5") = "" Or .Range("C6") = "" Then
         MsgBox ("il manque des informations")
      Else
         If MsgBox("Confirmez-vous le renseignement du " & .Range("C6").Value & " pour validation ? " & Chr(10) & _
                   .Range("D5").Value & " : " & .Range("E5").Value & Chr(10) & .Range("D6").Value & " : " _
                   & .Range("E6").Value & Chr(10) & .Range("D7").Value & " : " & .Range("E7").Value, vbYesNo) = vbNo Then

         Else
            If .Range("B11") <> "" Then
               .ListObjects(1).ListRows.Add.Range(1, 1).Value = CDate(Range("C4").Value)   'Now()
            Else
               '               .Range("B11") = CDate(Range("C4").Value)   'B11 entete colonne Date du tableau
            End If
            'ajouter les informations dans le tableau
            '            .Range("B" & dlt + 1) = Format(.Range("C4"), "dd/mm/yyyy") 'ne sert à rien
            .Range("C" & dlt + 1) = .Range("C5")
            .Range("D" & dlt + 1) = .Range("C6")
            .Range("E" & dlt + 1) = .Range("C7")
            .Range("F" & dlt + 1) = .Range("E5")
            .Range("G" & dlt + 1) = .Range("E6")
            .Range("H" & dlt + 1) = .Range("E7")
            '            'préparation pour une nouvelle entrée
            Reset_KmHr
         End If
      End If
   End With
 
Dernière édition:

pompaero

XLDnaute Impliqué
Bonjour cathodique, le fil, le forum,

Oui c'est exactement ça, effectuer une verification préalable à l'enregistrement. Oups !! désolé pour les précisions de fonctionnement mais je vois que tu maitrise le vba, effectivement il n'y aura qu'un couple (date , véhicule) par véhicule.
Merci d'avoir arrêté sur mon fil.

Cdlt
 

pompaero

XLDnaute Impliqué
Re cathodique,

Je viens de tester ta proposition, c'est exactement ce que j'espèrai , voir même mieux car j'ai vu que tu avais mêmemis le compteur km dans la vérification. :)
Ca fonctionne bien, maintenant je vais essayer de l'adapter à partir d'une autre feuille :eek:.
Merci

Cdlt
pompaero
 

MLLL

XLDnaute Nouveau
Bonjour !

Vous pouvez m'aider ?
Enfaîte j'ai un souci au niveau du Planning des tâches sur EXCEL....J'ai réussis à faire en sorte que mes cellules ce colorisent toutes seule en fonction des dates, mais c'est pas trop ce que je voulais..Enfaîte ce que j'aimerais faire c'est :
- Que mes cellules ce colorisent en fonction de nombre de semaine
- Pour que chaque tâche principales à sa propre couleur et pas toutes les tâches et sous-tâches la même

Merci Beaucoup d'avance !!
 

pompaero

XLDnaute Impliqué
Bonjour le fil, le forum,

Avec l'aide de cathodique, nous avons réussi à faire la vérification de données avant validation. Maintenant j'essai d'effectuer la même chose à partir d'une autre feuille, j'ai donc essayé d'adapter ce code mais bien évidemment ça bug, Grrrrrr
Le principe est de pouvoir effectuer la manoeuvre suivante avec le CommandButton3 (Valider) :
Si (Feuil FicVPA) date, conducteur, kilomètre sont vide alors
MsgBox "données manquantes"
sinon
Si date, conducteur, kilomètre sont renseignés alors
on vérifie dans feuil ("Mvt compteur") les données si elles existent
(si oui, on quitte la procédure puis enregistre la SheetActive en pdf)
sinon on enregistre les données (date, conducteur, km, etc..) dans feuil ("Mvt compteur") puis enregistre la sheetActive en pdf.

Je bloque sur les If, merci de votre aide.

Cdlt
pompaero
 

Pièces jointes

  • PompaeroV0.xlsm
    103.1 KB · Affichages: 18

cathodique

XLDnaute Barbatruc
Bonjour,

De quelle feuille s'agit-il à éditer en pdf? Feuil ("FicVPA") ou feuil ("Mvt compteur") ?

Bonne journée!

edit: un essai, mais ton tableau sera incomplet
 

Pièces jointes

  • PompaeroV0.xlsm
    109.3 KB · Affichages: 20
Dernière édition:

pompaero

XLDnaute Impliqué
Bonjour cathodique,

Merci de soutien, très bien ta proposition cela va dans le sens de mes attentes, génial.
Edition de la feuille en PDF est la FicVPA comme ma macro SaveAsPDF.
Pour les quelques infos manquantes (véhicule, immat, etc...) ça c'est bon, j'adapte.
Le soucis que je rencontre c'est l'edition_pdf, je ne trouve pas la macro edition_pdf que tu a mis, j'ai essayé de la remplacer par ma macro SaveAsPDF, ça ne fonctionne pas, pourquoi ?

pompaero
 

cathodique

XLDnaute Barbatruc
je ne trouve pas la macro edition_pdf que tu a mis, j'ai essayé de la remplacer par ma macro SaveAsPDF, ça ne fonctionne pas, pourquoi ?
Je n'ai mis aucune macro.
edition_pdf n'est qu'un message qui signale que le code s'est exécuté sans bug.
Car sur sur mon pc ta macro "SaveAsPDF" aurait planté.
Il fallait mettre en commentaire ou effacer le MsgBox " edition pdf!" et activer ta macro "SaveAsPDF".

@+
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
871

Statistiques des forums

Discussions
311 720
Messages
2 081 885
Membres
101 830
dernier inscrit
sonia poulaert