Macro Excel

Bonjour à tous,

Je sollicite votre aide ce matin dans la réalisation d'une macro hyper urgente.

J'aimerai installer une macro me permettant d'insérer une ligne avec des cellules protégées et d'autres non protégée (réserver à la modification). Donc j'ai mis 3 lignes dans mon exemple, je voudrai une 4ième où le numéro de la facture se'ajoute tout seul, que les formules soit recopiées et que la protection reste activée. Je crois que je dois insérer un bouton activant cette marco

Le mot de passe est coca

Je pars de 0 donc j'aurai besoin d'une macro complète.

Je vous remercie chaleureusement de votre aide.

82exemple.xlsx (93.08 Ko)

Bonjour,

Le mot de passe va rester dans le fichier final ou pas ?

Si non, voici un code pour faire cela

Sub insertion()
'Dan pour Apprenti MACROVBA
Dim dlg As Integer
Dim num As Long
With ActiveWorkbook.Sheets("BDD")
    dlg = .Range("A" & Rows.Count).End(xlUp).Row
    num = .Range("A" & dlg).Value + 1
    .Range("A" & dlg).EntireRow.Insert
    .Range("A" & dlg) = num
    .Range("M" & dlg + 1 & ":N" & dlg + 1).Copy .Range("M" & dlg & ":N" & dlg)
    .AutoFilter.Sort.SortFields.Clear
    .AutoFilter.Sort.SortFields.Add Key:= _
    .Range("A2:A" & dlg + 1), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With .AutoFilter.Sort
        .Header = xlYes
        '.MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End With
End Sub

Code à placer en VBE dans un module (à creer en VBE par INSERTION / MODULE) et à associer à un bouton sur cette feuille

A te relire

Bonjour Dan,

Je vais créer plusieurs onglets où 12 utilisateurs auront chacun un onglet pour renseigner leurs factures avec un onglet récap à la fin (chaque user aura accès à son onglet par un code) donc 12 codes différents. Je n'ai trouvé que ça comme solution pour que chacun ait accès qu'à ses factures)

La macro sera appliqué à chacun de ses 12 onglets afin d'insérer une nouvelle facture.

Concernant la macro, le code sera identique pour les 12 onglets.

est-ce que ça parait good ?

merci de ton retour

Re,

Si la structure de tes feuilles est identique, tu mets un bouton sur chaque feuille concernée et tu peux l'associer à ce code.

De cette manière le code est identique.

Si ok, merci lors de ta réponse de cloturer le fil en cliquant sur le v Vert à coté du bouton EDITER

Amicalement

J'ai ce message d'erreur qui apparaît

Erreur de compilation

Instruction incorrecte à l’extérieur de la procédure

Merci d'avance.

macro vba

re,

Tu es sûr du nom de ta feuille là ??? (BDD)

en effet

Merci Dan !

Maintenant la macro marche bien sur les listes déroulantes mais elle ne copie pas les formules, tu peux me filer un coup de main là dessus ? ou un forumeur svp ? (fichier en pj)

Si le mot de passe est activée (coca) peut-on l'enlever dans le code VBA et le remettre à la fin ?

J'avais réussi il y a quelques années mais impossible de retrouver cette connaissance lointaine...

Je vous remercie infiniment.

re,

mais elle ne copie pas les formules, tu peux me filer un coup de main là dessus ?

Si, la macro mettait les formules en M et N mais tu as changé ton fichier en ajoutant une colonne.

Toutefois je n'avais pas fait attention au colonne H, I, J. Voilà qui est fait dans le code ci-dessous

J'ai aussi rajouté pour le mot de passe.

Je ne sais pourquoi tu avais ajouté une instruction en début de macro. elle ne sert à rien...

Sub Insertion()
'MAcro Dan
Dim dlg As Integer
Dim num As Long
With ActiveWorkbook.Sheets("BDD")
    dlg = .Range("A" & Rows.Count).End(xlUp).Row
    num = .Range("A" & dlg).Value + 1
    .Unprotect "coca"
    .Range("A" & dlg).EntireRow.Insert
    .Range("A" & dlg) = num
    .Range("I" & dlg + 1 & ":K" & dlg + 1).Copy .Range("I" & dlg & ":K" & dlg)
    .Range("N" & dlg + 1 & ":O" & dlg + 1).Copy .Range("N" & dlg & ":O" & dlg)
    .AutoFilter.Sort.SortFields.Clear
    .AutoFilter.Sort.SortFields.Add Key:= _
    .Range("A2:A" & dlg + 1), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With .AutoFilter.Sort
        .Header = xlYes
        '.MatchCase = False
       .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    .Protect "Coca", userinterfaceonly:=True
End With
End Sub

Si ok, merci de cloturer le fil lors de ta réponse et ce, en cliquant sur le V vert à coté du bouton EDITER

Amicalement

merci beaucoup Dan pour l'aide apportée !

Rechercher des sujets similaires à "macro"