Q: Aide réalisation d'une macro (cht titre)

Bonjour,

Je me suis inscrit sur ce forum car j'ai un fichier excel que j'utilise tout le temps et pour des raisons pratique je souhaite automatiser certains opérations.

Merci d'avance pour votre aide

Mon tableau ne contient aucune MACRO.

Sur les 3 premières colonnes je doit rentrer une date.

1° colonne: le jour

2° colonne: le mois

3° colonne: l'année

Je souhaite automatiser cette action:

Je voudrais:

  • Lors d'insertion d'une ligne qu'elle soit écrite en rouge.
  • Que dans la 2° colonne le mois soit copié identique au précédent.
  • Que dans la 3° colonne l'année soit copiée identique à la précédente.
  • Que lorsque je renseigne le jour, la ligne entière passe en noire.

De plus il faudrait aussi que lorsque j'insère la ligne sur les colonnes J, L et M les formules soit identiques aux cases précédentes.

Pensez-vous que cela est réalisable sans devoir passer par une Macro?

Merci de toute l'attention que vous apporterez à ce post.

D'avance Merci

Bonjour,

à priori ça doit être faisable, mais il faudrait quand même que tu nous fasses passer un bout de ton fichier pour exemple...

Une dizaine de lignes sans données confidentielles serait bien, notamment pour voir les formules des colonnes J, L et M.

Qu'entends tu par insérer une ligne sans passer par une macro ?

Tu te positionnes et tu fais Insertion/Ligne ?

Ou simplement tu entres des nouvelles données dans une ligne vierge ?

Dans l'attente de ton fichier,

Bonjour Sylvain,

Merci de t'intéresser à ma question.

J'ai fait vite fait un petit fichier excel.

En fait j'essaie d'automatiser au maximum et surement mon fichier.

Je risque d'avoir plusieurs questions concernant ce fichier mais je ne les poserais pas toutes à la fois afin que l'on puisse me répondre point par point.

Donc déjà pour vous aider à me répondre je vous invite à lire le fichier joint.

https://www.excel-pratique.com/~files/doc/Exemple_pour_Forum.xls

Merci d'avance pour vos réponses.

En fait je ne sais pas faire de macro c'est donc pour cela que pour le moment je ne souhaite pas passer par une macro.

Re,

Pour joindre un fichier : c'est ici

Ensuite tu récupères l'url du fichier envoyé http://www.excel-pratique.com/~files/...

et tu la colles entre les balises BBcode : [url]adresse du fichier[/url]

Edit : OK je vois que tu as réussi

Oui Lol j'ai fini par voir le "Joindre un fichier" du coup j'ai repris mon message.

Par contre mon fichier faisait 280Ko!

Sinon si on ne peut le faire que par Macro pas de souci par contre je vais avoir besoin d'aide!!

OK avec un collègue on a commencé une macro.

Le résultat est bon a un détail IMPORTANT prés.

On arrive à insérer une ligne par la macro .

Elle me crée bien une macro en ligne rouge avec les cellules renseignées comme je veux.

Voila le hic: la macro dit d'aller sur les cellules B21 , C21 etc

hors moi je veux que à partir de la ligne que j'ai insérer à la Ligne N-1 il me copie les informations.

voici la macro

pouvez-vous y jeter un coup d'oeil et ma la corriger merci.

Sub essai()
' Touche de raccourci du clavier: Ctrl+w
'
    Selection.EntireRow.Insert
    Cells(RowIndex + 1, columnindex + 1).Select
    Range("b21:C21").Select
    Selection.Copy
    Range("B22").Select
    ActiveSheet.Paste
    Range("J21").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("J22").Select
    ActiveSheet.Paste
    Range("L21:M21").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("L22").Select
    ActiveSheet.Paste
    Range(Selection, Cells(1)).Select
    Range("M22").Select
    Range(Selection, Cells(ActiveCell.Row, 1)).Select
    Selection.Font.ColorIndex = 3
End Sub

Bonjour Baho,

Petite remarque personnelle si je peux me permettre...

Je pense que tu es en train de réinventer l'eau tiède, comme on dit chez nous

En effet il existe déjà pas mal de logiciels de compta, sur Excel ou autre (peut-être pas autant que des plannings mais quand même... ), et dans le lot tu trouverais certainement ton bonheur, sans te heurter à tous les obstacles que tu vas rencontrer au fur et à mesure, qui t'obligeront très certainement à tout casser plusieurs fois pour reconstruire différemment...

Ceci étant dit, il sera quand même intéressant pour toi de te pencher sur les macros, alors voici un bout de code pour t'aider à avancer.

Sub Nouvelle_ligne()

Dim x As Long 'on déclare x comme variable (pouvant aller jusqu'à 2 147 483 647)

x = Selection.Row 'on définit x étant le numéro de ligne de la cellule active

Application.ScreenUpdating = False 'désactive la mise à jour de l'écran _

(histoire qu'on ne voit pas toutes les étapes de la macro)

Selection.EntireRow.Insert 'insère un ligne au dessus de la cellule active

Range("A" & x - 1 & ":M" & x - 1).AutoFill Destination:=Range("A" & x - 1 & ":M" & x), _

Type:=xlFillDefault 'copie la ligne de dessus vers la nouvelle ligne

Range("A" & x & ":M" & x).Font.ColorIndex = 3 'couleur du texte de la nouvelle ligne = rouge

Range("A" & x).ClearContents 'efface le contenu de la colonne A

Range("D" & x & ":K" & x).ClearContents 'efface le contenu des colonnes D à K

End Sub

Ce code s'arrête là où tu en étais, on verra pour la suite...

Perso je laisserais tomber les colonnes B et C, et je mettrais la date complète en A (possibilité de tri,...)

On pourrait faire qu'un doubleclic en colonne A te met la date du jour dans la cellule, et remet en noir les textes de la ligne...

En attendant de tes nouvelles

Bonjour Sylvain,

J'ai bien reçu ta Macro, je l'ai essayé et elle marche impecable ; juste quelques réglages à paufiner et elle répond tout à fait à ma demande.

C'est super je commence à mettre un pied dans VBA!

Ton message ne me heurte en aucun point. Je m'attendais a ce qu'on me la fasse.

Cela fait maintenant 6 ans que je tiens à jour se fichier et je ne souhaite pas changer de logiciel car j'ai créer une feuille excel à mon besoin.

J'ai peur qu'un logiciel standart ne me bride.

Et c'est pourquoi aujourd'hui j'essai de l'améliorer en automatisant des opérations qui me font perdre du temps.

Merci à toi je vais intégrer cette macro dans mon fichier et faire quelques test.

Si j'ai encore des questions sur cette macro je me permettrais de te resolliciter ou un autre membre du forum.

Et je pense que j'aurais d'autres questions pour continuer ma démarche.

Je les poserais sur ce même post.

Bonne journée.

A+

Re,

Les colones B et C me servent à faire un tri au mois ou à l'année.

Je prèfére donc les garder.

Quand à la date il se peut qu'à un jour J j'indique une date antérieure.

Par contre le double click (ou le fait de mettre un chiffre) sur une case de la colonne A qui me met la ligne en noir m'interesse.

De plus je viens de m'apercevoir d'une chose.

Les cases colonnes L ont cette formule:

L-1-J+K

hors lors d'une insertion de ligne, la ligne qui se décale vers le bas garde le lien sur l'ancienne case L-1, ce qui donne:

L-2-j+K

et j'ai bien L-1-J+k pour la nouvelle ligne.

Comment peux-t'on y remédier?

A+

BAHOLIMAMA a écrit :

lors d'une insertion de ligne, la ligne qui se décale vers le bas garde le lien sur l'ancienne case L-1

Oui j'avais pas pensé à ça , mais c'est logique

Tu peux remplacer ta formule en L2 par :

=INDIRECT("L"&LIGNE()-1)-I3+K3

Et l'étirer sur toute la colonne.

Ma macro efface aussi la formule en colonne J, c'est une connerie

Pour ne pas avoir 0,00 quand tu ajoutes une ligne, tu peux remplacer ta formule en J2 par :

=SI(I2="";"";I2*6,55957)

Pour faire plus simple je te joins ton fichier modifié : https://www.excel-pratique.com/~files/doc/Compta_Baho.xls

J'ai modifié les formules, ma macro, les MFC, et j'ai ajouté une macro sous "Feuli1" dans VBE, qui te met la ligne en noir quand tu renseignes le jour.

Dans ma grande magnificence, je t'ai aussi versé 1500€ sur ton compte pour que tu ne sois pas dans le rouge

Essaye et dis nous

RE,

Oui effectivement j'avais vu pour la colonne J et j'ai fait la modif (elle était à ma portée)

J'ai essayé ton fichier. Tout marche.

J'ai intégré tes modifications sur mon fichier test et et je rencontre un souci.

A l'insertion de la nouvelle ligne le mois et l'année s'incrémentent.

Pourtant j'ai fait un copie/coller de ta macro.

Serais-tu d'où cela pourrait provenir?

Merci beaucoup pour les 1500 Euros je pense que cela va pouvoir beaucoup nous aider!!!

Je pense que tu as résolu rapidement toutes les questions qui me venaient en tête.

Il ne me reste pour le moment plus qu'un point à régler.

Généralement j'insère la ligne à la fin du tableau.

Une fois que je mets la date est il réalisable de faire une macro qui vient me placer la ligne avec les autres même dates?

Une question plus générale: Est il possible de revenir en arrière une fois que l'on a lancé la macro car je n'y arrive pas?

Voilà sinon je suis satisfait et content d'être venu sur ce forum.

Merci personnelement à toi Sylvain pour le temps que tu as passé à m'aider.

BAHOLIMAMA a écrit :

A l'insertion de la nouvelle ligne le mois et l'année s'incrémentent.

Ah oui c'est encore ma faute

Dans la macro, remplace tous les "xlFillDefault" par "xlFillCopy"

Pour revenir en arrière après avoir lancé une macro c'est non

Pour le tri par dates c'est possible, mais tu vas être embêté car tu as stocké des nombres sous forme de texte, pour avoir les zéros devant.

Il te faut donc d'abord les convertir en nombres, puis mettre dans le format de cellule des colonnes A et B, le format personnalisé : 0#

Il ne te reste plus qu'à enregistrer une macro de tri, par exemple :

Sub Tri_dates()

Range("B2").CurrentRegion.Select
Selection.Sort Key1:=Range("C2"), Order1:=xlAscending, Key2:=Range("B2") _
    , Order2:=xlAscending, Key3:=Range("A2"), Order3:=xlAscending, Header:= _
    xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, DataOption3:= _
    xlSortNormal

End Sub

oulah... y'a des fois je me dis heureusement que je suis pas payé pour ça...

Bon je rentre du ciné (c'est la quinzaine à 3€ la place chez nous... ), et tout d'un coup j'ai un flash je me dis : je crois bien que j'ai laissé trainer un "select". Vérification faite effectivement

Alors voilà : comme dans ta première macro, quand tu enregistres un code en temps réel, toutes les opérations sont retranscrites. Donc ça donne toujours :

1 - je sélectionne une cellule ou une plage

2 - je fais une opération sur cette sélection

Et à la fin de ta macro ça te fais chier d'avoir une plage sélectionnée alors que tu aimerais retrouver le curseur là où tu l'avais laissé...

Pour éviter cela chaque fois que tu as une ligne qui fini par Blabla.Select, et la suivante qui commence par Selection.Blabla, tu peux fusionner les 2 lignes.

Dans ma macro de tout à l'heure ça te donne au début :

Range("B2").CurrentRegion.Sort Key1:=Range("C2"),... ...

Voilà, en espérant que ça t'aidera pour tes futurs codes, au moins je peux aller me coucher la conscience tranquille

Salut Sylvain,

J'espère que cela n'a pas trop gaché ton film!

Merci pour ce code, celui la je l'essaierais plus tard.

En tout cas avec les infos que tu m'as fourni je suis vraiment content du résultat. Le fichier est beaucoup moins contraignant et je peux vite le fermer pour ne plus y penser

C'est terrible

PS: Je pense que l'on peut cloturer se sujet vu que tu as répondu à tout

Merci Sylvain!

Rechercher des sujets similaires à "aide realisation macro cht titre"