Controle ouverture de classeur

Bonjour à tous,

Je suis à la recherche d'un code VBA pour avoir la procédure suivante qui s'exécute à l'ouverture d'un fichier:

1) Demande le nom de l'utilisateur et l'enregistre dans une variable

2) Copie et colle en tant que valeur l'ensemble des cellules qui ne contiennent pas de valeurs de la plage B7:C*** de l'onglet "Données"

3) Copier le nom d'utilisateur dans la première cellule sans valeur de la colonne C

4) Mettre la date du jour dans la première cellule sans valeur de la colonne B

Merci d'avance!

Bonjour,

une proposition, code à mettre dans le module du classeur (workbook)

Private Sub Workbook_Open()
    u = InputBox("introduisez votre nom d'utilisateur")
    dl = Cells(Rows.Count, 1).End(xlUp).Row
    Set r = Range("A1:C" & dl).SpecialCells(xlCellTypeBlanks)
    For Each c In r
        c.Value = ""
    Next
    r = Range("C1:C" & dl).End(xlDown).Row + 1
    Cells(r, 3) = u
    r = Range("B1:b" & dl).End(xlDown).Row + 1
    Cells(r, 2) = Date
End Sub

Merci pour la réponse rapide!

Je me suis trompé dans l'expression de mon besoin, il faudrait que la macro copie et colle en tant que valeur l'ensemble des cellules qui contiennent des valeurs de la B7:C*** de l'onglet "Données". "***" étant la ligne de la dernière cellule non vide de la plage.

Et aussi:

3) Copier le nom d'utilisateur dans la première cellule sans valeur de la plage C7:C***

4) Mettre la date du jour dans la première cellule sans valeur de la colonne B7:B***

rebonsoir,

c'est moi qui ai mal lu....

Private Sub Workbook_Open()
    u = InputBox("introduisez votre nom d'utilisateur")
    dl = Application.WorksheetFunction.Max(Cells(Rows.Count, 2).End(xlUp).Row, Cells(Rows.Count, 3).End(xlUp).Row)
    If dl < 7 Then dl = 7
    Range("B7:C" & dl).Copy
    Range("B7:C" & dl).PasteSpecial Paste:=xlPasteValues
    r = Application.WorksheetFunction.Max(Cells(Rows.Count, 3).End(xlUp).Row + 1, 7)
    Cells(r, 3) = u
    r = Application.WorksheetFunction.Max(Cells(Rows.Count, 2).End(xlUp).Row + 1, 7)
    Cells(r, 2) = Date
End Sub

Merci beaucoup h2so4!

Sur le fond cela semble marcher pas trop mal; si c'est qu'il semble que lros de la selection de la plage B7:C***, Excel selectionne des cellules vides mais qui sont remplies d'une couleur, est-ce que c'est normal? Parce que du coup, les données de date et de nom d'utilisateur sont renvoyées sur la première cellule ne contenant pas de couleur.

Je voudrais faire également une petite adaptation, à savoir rajouter une formule dans la colonne B, sous la cellule où est rajoutée la date et sur une plage de disons 500 cellules de long qui sera de la forme "=SI(D"ligne ou on rajouté la date"="";"";B"ligne ou on a rajouté la date"), et de la même manière sur la colonne C "=SI(D"ligne ou on rajouté la date"="";"";C"ligne ou on rajouté la date")

Enfin je voudrais m'assure que le code ne soit que pour l'onglet "Données"

Merci d'avance pour tout aide!!

merci de mettre un fichier

En effet un fichier vaut plus qu'un long discours

Bonjour,

une nouvelle proposition

Private Sub Workbook_Open()
    u = InputBox("introduisez votre nom d'utilisateur")
    dl = Cells(Rows.Count, 2).End(xlUp).Row
    If dl < 7 Then dl = 7
    Range("B7:C" & dl).Copy
    Range("B7:C" & dl).PasteSpecial Paste:=xlPasteValues
    For i = 7 To dl
        If Cells(i, 2) = "" Then Exit For
    Next i
    Cells(i, 3) = u
    Cells(i, 2) = Date
    i = i + 1
    Range("B" & i & ":C" & i + 500).Formula = "=IF($D" & i-1 & "="""","""",B" & i - 1 & ")"
End Sub

Ca a l'air de marcher comme je le voulais,! Merci beaucoup!!

Rechercher des sujets similaires à "controle ouverture classeur"