Rechercher une date et une colonne vide
Bonjour à tous,
Merci de prendre le temps pour m'aider :)
J'ai ce code (ci-dessous) qui me permet de faire un tableau de relever compteur d'heure pour des machines outils... Cependant j'aimerai améliorer la chose pour m'en servir comme suivi d'un compte bancaire, la ou je pèche c'est à la recherche de la date.
Private Sub CommandButton1_Click()
Dim aujourdui As Date, MAchine As Range, col%, madate As Range, Derlig%
aujourdui = DateSerial(Year(Now), Month(Now), Day(Now)) '........aujourdui va contenir la date d'aujourdui (jour mois année)
With Sheets("Compteur Machine") '..........................................agit sur cette feuille uniquement
Set MAchine = Rows("1:1").Find(What:=Me.ComboBox1) '............cherche la machine sur la ligne de titre (ligne8)
If MAchine Is Nothing Then '...................................si la machine n'éxiste pas
MsgBox "Machine non référencée ...": Exit Sub '...............message + on sort de la procédure
Else '.........................................................sinon
Set madate = Columns("A").Find(What:=aujourdui) '.............recherche la date dans colonne A
If madate Is Nothing Then '..................................si date non présente
Derlig = .Range("A" & Rows.Count).End(xlUp).Row + 1 '.......première cellule vide en colonne A
Else '.......................................................sinon
Derlig = madate.Row '.......................................ligne correspondant à la date
End If
col = MAchine.Column '........................................colonne de la machine selectionnée
.Cells(Derlig, 1) = aujourdui '...............................date en colonne A.
.Cells(Derlig, col) = Me.TextBox1.Value '.....................relevé dans la colonne de la machine
End If
ComboBox1 = ""
TextBox1 = ""
End With
End SubIl peut m'arriver de faire plusieurs relevé par jours (plusieurs dépenses), donc si la date est déjà présente dans mon tableau, la valeur qui se trouve dans la colonne en face, s'efface et se remplace. Je voudrais rajouter une ligne de code mais je ne sais pas comment coder cela. La ligne servirai a dire de :
- rechercher la date dans la colonne A, (Déjà existant)
- si date présente,
- recherche dans la colonne "Compte" si cellule vide,
- si la cellule est vide, inscrire la valeur,
- sinon (retour à code déjà existant) première cellule vide en colonne A.
Voici ce que j'ai fait comme modification pour le moment.
Private Sub CommandButton1_Click()
Dim aujourdui As Date, Compte As Range, col%, madate As Range, Derlig%
aujourdui = DateSerial(Year(Now), Month(Now), Day(Now)) '........aujourd'hui va contenir la date d'aujourd'hui (jour mois année)
With Sheets("Feuil1") '..........................................agit sur cette feuille uniquement
Set Compte = Rows("1:1").Find(What:=Me.ComboBox1) '.............cherche le compte sur la ligne de titre (ligne1)
If Compte Is Nothing Then '....................................si le compte n'existe pas
MsgBox "Compte invalide": Exit Sub '..........................message + on sort de la procédure
Else '.........................................................sinon
Set madate = Columns("A").Find(What:=aujourdui) '.............recherche la date dans colonne A (ET RECHERCHER SI COLONNE "COMPTE" = VIDE)
Derlig = .Range("A" & Rows.Count).End(xlUp).Row + 1 '.......première cellule vide en colonne A
col = Compte.Column '.........................................colonne du compte sélectionnée
.Cells(Derlig, 1) = aujourdui '...............................date en colonne A.
.Cells(Derlig, col) = Me.TextBox1.Value '.....................relevé dans la colonne du compte
End If
ComboBox1 = ""
TextBox1 = ""
End With
End Sub