Exécuter macro à la ligne suivante
Bonjour je sollicite encore votre aide:
J'ai créé une macro ( Nouvelle_Ligne), il faudrait que celle ci s'exécute quand en colonne AG il y a une valeur pour la placer à la ligne suivante pour constituer un tableau. Comme je l'ai faite en mode enregistrement elle est très longue ; pourrait on la réduire ?
Voici le fichier avec la macro
Bonjour,
Afin de bien saisir la demande, la cellule AG est complétée manuellement ?
Si oui, c'est bien lorsqu'elle est complétée qu'il faut exécuter la nouvelle ligne et est-ce bien toujours sur la feuille ROSE ?
En attendant voic déjà le code réduit
Sub Nouvelle_Ligne()
Range("X8") = "N°"
Range("Z8") = "Case"
Range("AB8") = "Train"
Range("AD8") = "Rentre à"
Range("AF8") = "A mettre en case"
Range("AH8") = "Train"
With Range("X8,Z8,AB8,AD8,AF8,AH8").Font
.Name = "Arial"
.Size = 10
.bold = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
'Formules
Range("Y8").FormulaR1C1 = "=ChercheN(R[-1]C[10])"
Range("AA8").FormulaR1C1 = "=ChercheCase(RC[-2])"
Range("AC8").FormulaR1C1 = "=Cherchetrain(RC[-2])"
Range("AE8").FormulaR1C1 = "=DernRentre(RC[-6])"
Range("AI8").FormulaR1C1 = "=ChercheTrain(RC[-2])"
'Format
With Range("Y8,AA8,AE8,AG8,AI8,AC8").Font
.Name = "Arial"
.Size = 16
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Bold = True
End With
With Range("AC8").Font
.Name = "Arial"
.Size = 12
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Bold = True
End With
'Encadré
Range("X8:AI8").BorderAround ColorIndex:=xlAutomatic, Weight:=xlThin
End SubBonsoir , le code a fait une sacré cure d'amaigrissement : c'est très bien !
Oui vous avez bien saisi la cellule AG est remplie manuellement , une fois remplie il faut exécuter Nouvelle_Ligne.
Il faudrait exécuter Nouvelle_Ligne de ligne en ligne pour constituer un tableau et pas seulement sur la ligne 8.
De plus comment faire pour avoir dans le code les With en bleu et ente " " en rouge ?
Re,
Voici les codes à utiliser.
- Faire clique droite sur l'onglet ROSE et choisir l'option "Visualiser le code".
- Dans la fenêtre à droite coller le code ci-dessous.
Private Sub Worksheet_Change(ByVal Target As Range)
'Macro Dan pour isabellette
If ok = True Or Target.Count > 1 Then Exit Sub
lg = Range("Y" & Rows.Count).End(xlUp).Row
If Not Intersect(Target, Range("AG" & lg)) Is Nothing Then Call Nouvelle_Ligne
End SubDans le module où se trouve le code Sub Nouvelle_Ligne(), remplacer le tout par le code ci-dessous :
Public lg As Integer
Public ok As Boolean
Sub Nouvelle_Ligne()
'Macro isabellette modifiée. Dan
ok = True
Range("X" & lg + 1) = "N°"
Range("Z" & lg + 1) = "Case"
Range("AB" & lg + 1) = "Train"
Range("AD" & lg + 1) = "Rentre à"
Range("AF" & lg + 1) = "A mettre en case"
Range("AH" & lg + 1) = "Train"
With Range("X" & lg + 1 & ",Z" & lg + 1 & ",AB" & lg + 1 & ",AD" & lg + 1 & ",AF" & lg + 1 & ",AH" & lg + 1).Font
.Name = "Arial"
.Size = 10
.Bold = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
'Formules
Range("Y" & lg + 1).FormulaR1C1 = "=ChercheN(R[-1]C[10])"
Range("AA" & lg + 1).FormulaR1C1 = "=ChercheCase(RC[-2])"
Range("AC" & lg + 1).FormulaR1C1 = "=Cherchetrain(RC[-2])"
Range("AE" & lg + 1).FormulaR1C1 = "=DernRentre(RC[-6])"
Range("AI" & lg + 1).FormulaR1C1 = "=ChercheTrain(RC[-2])"
'Format
With Range("Y" & lg + 1 & ",AA" & lg + 1 & ",AE" & lg + 1 & ",AG" & lg + 1 & ",AI" & lg + 1 & ",AC" & lg + 1).Font
.Name = "Arial"
.Size = 16
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Bold = True
End With
With Range("AC" & lg + 1).Font
.Name = "Arial"
.Size = 12
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Bold = True
End With
'Encadré
Range("X" & lg + 1 & ":AI" & lg + 1).BorderAround ColorIndex:=xlAutomatic, Weight:=xlThin
ok = False
End SubUne fois le fichier enregistré, il suffit de modifier la dernière cellule en AG pour ajouter une nouvelle ligne
De plus comment faire pour avoir dans le code les With en bleu et ente " " en rouge ?
Ben les With se mettent en principe en bleu automatiquement. Sinon les possibilités sont faibles. On peut modifier de manière globale en allant dans VBA -> Outils -> options et sous l'onglet "format editeur". Cette option ne s'applique qu'aux possibilités reprises dans la liste déroulante.
Si ok, merci de ne pas omettre de cloturer le fil en cliquant sur le V vert à coté du bouton EDITER
Amicalement
Bonsoir , super on dirait de la magie ; on tape une info et toutes les autres complémentaires apparaissent.
UN GRAND MERCI