comptEqpt Macro
' Macro enregistrée le 08/05/2007 par cocro
' se positionne sur la dernière ligne de l"occurence d"une chaine
Dim maChaine As String
Dim CodEqpt As Range
Dim R1 As Long, R2 As Long
maChaine = "SALL001"
Set CodEqpt = Range("D:D").Find(What:=maChaine, After:=Range("D1"), _
LookIn:=xlValues, LookAt:=xlPart, Searchdirection:=xlPrevious)
If CodEqpt Is Nothing Then
MsgBox maChaine & " not found!"
Exit Sub
End If
R2 = CodEqpt.Row
For R1 = R2 - 1 To 1 Step -1
If Cells(R1, 2).Value <> maChaine Then Exit For
Next R1
R1 = R1 + 1
Range(Cells(R1, 2), Cells(R2, 2)).Select
End Sub
' comment continuer pour
' recopier contenu cellule dans feuille nbequip
' continuer boucle avec toutes les autres valeurs possibles
Range(Cells(R1, 2), Cells(R2, 2)).Copy Sheets("nbequip").Range("A1")
Option Explicit
Private Sub ComboBox1_Change()
If ComboBox1.Value <> "" Then
' si le choix de la combobox est différend de vide
Selection.Value = ComboBox1.Value
ComboBox1.Visible = False
Call SearchIncrement(Selection.Value)
Range("C" & Selection.Row).Select
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
' Si l'utilisateur à supprimer le code salle
If Target.Column = 1 And Target.Value = "" Then
' On efface toutes les informations de la ligne
Range("B" & Target.Row).ClearContents
Range("C" & Target.Row).ClearContents
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column > 1 Then Exit Sub
' Si une réservation n'a pas déjà été effectuée
If Range("B" & Target.Row) = "" Then
With ComboBox1
.Left = Selection.Left + Selection.Width
.Top = Selection.Top
.Value = ""
.Visible = True
End With
Else
ComboBox1.Visible = False
End If
End Sub
Sub SearchIncrement(ByVal MaSalle As String)
Dim Cel As Range, DerLig As Integer
Dim DernierInc As String, MemInc As String, NouveauInc As String, VInc As Integer
' Sort de la procédure si la salle est vide
If MaSalle = "" Then Exit Sub
' Dernière ligne = dernière - 1
DerLig = ActiveSheet.Range("A65536").End(xlUp).Row - 1
DernierInc = ""
For Each Cel In ActiveSheet.Range("A1:A" & DerLig)
If Cel.Value = MaSalle Then
MemInc = Range("B" & Cel.Row).Value
If MemInc > DernierInc Then
DernierInc = MemInc
End If
End If
Next
' Si l'incrément à été trouvé
If DernierInc <> "" Then
VInc = Val(Right(DernierInc, 4))
NouveauInc = Left(DernierInc, 8) & Format(VInc + 1, "0000")
Else
NouveauInc = MaSalle & "EQ0001"
End If
Range("B" & Selection.Row).Value = NouveauInc
End Sub
Tu peux tutoyer sur le forum, tout le monde se connaitcocro à dit:Bonsoir,
je découvre tardivement votre message
J'ai mis un nouveau fichier avec pleins d'explications dans le code, tu devrais t'en sortir.d'un 1er abord cela me semble assez "facile" à transposer dans mon contexte de travail (même si le vba et les macros ne sont pas encore un jeu d'enfant pour moi).
toutefois question :
où faut-il mettre la combobox dans ma feuille de calcul ?
Oui c'est ça, mais le combobox peut être placé n'importe ou dans la feuille, il est automatiquement placé ou il faut :en colonne B qui près un clic sur A -codsalle-, l'a fait apparaitre,
et une fois sélectionné le code incrémente la valeur en B -code resa- et le curseur se place en C -date-
With ComboBox1
[COLOR=blue][B].Left = Selection.Left + Selection.Width
.Top = Selection.Top[/B][/COLOR]
No problemo, tu devrais y arriver, sinon il y'a le forumsi tel est le cas,
plus qu'à repérer les colonnes dans mon projet et l'incrémentation sera "aisée".
'ComboBox1.Visible = False