Insertion ligne et mise en forme

gianluca

XLDnaute Occasionnel
Bonjour le forum et bon Week end à tous.


J'ai une nouvelle sollicitation pour vous... qui m'avez déjà si souvent sorti de l'ornière.
Grace au forum je progresse un peu mais il me reste de nombreuses lacunes.
alors voilà:
Dans une procédure je crée un agent, lui attribue une feuille nominative et ajoute cet agent dans la feuille récap des agents.
Et là je sèche pour ajouter l'agent en recap. J'arrive à le porter sur la dernière ligne. Mais comment faire pour reproduire via VBa à la fois la mise en page des cellules, et les formules qui sont contenues dans les autres lignes ? (formules qui vont chercher les données sur chaque feuille individuelle)

Et comme je ne doute de rien, j'aimerais bien que ma macro termine en retriant les agents par ordre alphabétique.

Merci à vous par avance.

Gianluca



C'est difficile pour moi de vous joindre le fichier car il pèse trop lourd, je joins donc la feuille récap en ayant tout viré ce qui fait que c'est un peu succint.
 

Pièces jointes

  • forum 3.xls
    16.5 KB · Affichages: 68

Brigitte

XLDnaute Barbatruc
Re : Insertion ligne et mise en forme

Bonsoir,

J'ai récemment eu besoin de faire qqchse qui ressemble à ca. Hervé (puis Pascal) m'ont aidée pour la macro, une fois définis mes besoins qui étaient en effet de rajouter des lignes vierges dans un tableau de saisie, mais des lignes vierges contenant des formules et des MFC.

J'avais créé une ligne modèle en dessous du tableau et Hervé a donc créé une macro qui recopie cette ligne modèle (qui contient même, pour le cas où on la démasque, les mots "ligne pour copie" et qui doivent être effacés après copie).

Si cela peut t'aider dis moi, je t'indiquerai le fil. Sinon une recherche sur mon prénom devrait te conduire, dans les semaines qui précèdent au fil où j'ai joint mon tableau. Et tu pourras ainsi découvrir la macro (adaptée ensuite par Pascal dans un deuxième cas : là je ne sais plus si le fichier est joint, je vais regarder).

Voilou

Edit : comme promis, voici déjà un fil (adaptation de Pascal justement, mais tu y trouveras le fichier initial : macro d'hervé, si besoin du fichier avec macro de pascal, je l'ai au boulot, pas ici, donc ca devra attendre mercredi) https://www.excel-downloads.com/threads/la-macro-ne-rajoute-pas-les-lignes-a-la-fin.73805/

En fait la macro d'hervé permet de recopier jusqu'à dix fois la ligne modèle (à la fin du tableau vierge) dans la mesure où il y a une cellule remplie par une formule (=ligne () ). La macro de pascal qui m'était nécessaire pour un second fichier dans la même veine le permet même si le fichier n'est pas saisi du tout : aucune cellule remplie et rajoute donc les cellules au début ou après la dernière ligne remplie (qui n'est pas forcément la dernière ligne du tableau initial)...
 
Dernière édition:

gianluca

XLDnaute Occasionnel
Re : Insertion ligne et mise en forme

RE Brigitte, le Forum....


Merci de ta réponse, Brigitte, cela devrait faire l'affaire... Faut que j'adapte à mon projet. et que je comprenne comment cela marche :)

Bon Dimanche.

Gianluca.
 

Brigitte

XLDnaute Barbatruc
Re : Insertion ligne et mise en forme

Bonjour,

Je viens de retrouver sur ma clef usb le deuxième fichier (celui où Pascal76 m'a aidée) où se trouve la macro adaptée qui permet de recopier la ligne modèle avec ses éventuelles formules (là y en a pas) et MFC (là oui), sans qu'il y ait besoin de cellules remplies.

Voici le code (en rouge le code qui change, de mémoire) :

Code:
Public Sub brigitte()
Dim nbligne As Long
Dim t As String
Dim derligne As Integer
ActiveSheet.Unprotect
Application.ScreenUpdating = False
nbligne = Application.InputBox("Nombre de lignes à insérer (maximum 10)", "Insertion ligne", 10, , , , , 1)
Select Case nbligne
    Case Is > 10: t = "Maximum 10, SVP"
    Case 0: Exit Sub
    Case Is < 1: t = "Supérieur à 0, SVP"
End Select
If t <> "" Then
    t = t & vbNewLine & vbNewLine & "Procédure arrêtée."
    MsgBox t, , "Attention..."
    Exit Sub
End If
[COLOR=red]derligne = Range("a2").End(xlDown).Row + 1
If derligne = 3 Then derligne = 4
Rows(derligne & ":" & derligne + nbligne - 1).Insert[/COLOR]
[COLOR=red]Range("modele").Copy Destination:=Range("a" & derligne & ":a" & derligne + nbligne - 1)
Range("d" & derligne & ":d" & derligne + nbligne - 1).ClearContents[/COLOR]
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFormattingRows:=True, AllowInsertingRows:=True, AllowDeletingRows _
        :=True
 
Application.ScreenUpdating = True
End Sub

Voici le code de la première macro d'Hervé qui utilise le contenu de la cellule située en colonne F (=ligne () ) : en bleu le code différent (vérifier s'il y a pas d'autres choses, surement bien sûr la ligne modèle qu'il faut en tout cas définir par Insertion/nom, taper modele et definir la plage (différente dans les deux tableaux et à adapter pour toi).

Code:
Public Sub brigitte()
Dim nbligne As Long
Dim t As String
Dim derligne As Integer
ActiveSheet.Unprotect
Application.ScreenUpdating = False
nbligne = Application.InputBox("Nombre de lignes à insérer (maximum 10)", "Insertion ligne", 10, , , , , 1)
Select Case nbligne
    Case Is > 10: t = "Maximum 10, SVP"
    Case 0: Exit Sub
    Case Is < 1: t = "Supérieur à 0, SVP"
End Select
If t <> "" Then
    t = t & vbNewLine & vbNewLine & "Procédure arrêtée."
    MsgBox t, , "Attention..."
    Exit Sub
End If
[COLOR=blue]derligne = Range("f1").End(xlDown).Row + 1
Rows(derligne & ":" & derligne + nbligne - 1).Insert
Range("modele").Copy Destination:=Range("a" & derligne & ":a" & derligne + nbligne - 1)
Range("g" & derligne & ":g" & derligne + nbligne - 1).ClearContents[/COLOR]
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFormattingRows:=True, AllowInsertingRows:=True, AllowDeletingRows _
        :=True
 
Application.ScreenUpdating = True
End Sub


Et voici le fichier pour que tu puisses comprendre (fichier avec macro adaptée par Pascal) puisque dans le fil cité plus haut, tu as la macro initiale. Les macros déprotègent et reprotègent le fichier car il est utilisé par de nombreuses personnes, pour éviter que par inadvertance, il se passe des choses pas glop. La macro se trouve dans les deux feuilles (Bord. AI Gpts et BV et BE ADLA)

Bon courage.
 

Pièces jointes

  • Tableau Borderereaux Archives Groupements.zip
    16.1 KB · Affichages: 42
Dernière édition:

Brigitte

XLDnaute Barbatruc
Re : Insertion ligne et mise en forme

Re,

C'est un plaisir que de pouvoir passer à d'autres ce qu'on a eu le privilège d'avoir obtenu, ca me permet de remercier chaleureusement une fois encore les personnes qui m'ont aidée sur ma mission ARCHIVES : Jocelyn (pour ses listes déroulantes complexes), Hervé (inventeur de la macro) et Pascal (Adaptateur talentueux).

Reviens si besoin, je t'expliquerai avec mes modestes moyens cette macro que j'ai fini par comprendre.
 

Discussions similaires

Statistiques des forums

Discussions
312 046
Messages
2 084 854
Membres
102 688
dernier inscrit
Biquet78