XL 2013 Ajout par VBA de données dans une colonne d'un tableau avec un nombre de lignes qui peut augmenter

onyirimba

XLDnaute Occasionnel
Supporter XLD
Bonjour,

J'ai une question :
  1. Est-ce que je pourrai obtenir une programmation VBA qui dans le colonne "CA" du fichier RAF BRS (voir capture d'écran ci-dessous) ajoute l'information RAF sur la première partie "Projet" lié au Reste à faire et "RAF PROV" sur la 2ieme partie "Provisions" ?
    • Sachant que 1 nouvelle ligne peut être ajouté dans la partie "Projet" qui débute toujours ligne 17 (ex: 2200TRAZE) mais jamais dans la partie "provisions" (donc il y a toujours 2 lignes dans la partie "Provisions")
    • Donc les lignes liées au "Projet" ne se termine pas forcément ligne 30 car si 2 lignes projets s'ajoutent elle se terminera ligne 32 et la première ligne Provision débutera ligne 35 et non ligne 33
    • Sachant également que si 1 ligne Projet s'ajoute dans la partie Projet de la grande partie reste à faire la même ligne Projet s'ajoutera dans la partie Projet de la grande partie du Budget/Réalisé/Synthèse (Donc il y a toujours le même nombre de lignes Projet dans la partie Projet du "Reste à faire" et la partie Projet du "Budget/Réalisé/Synthèse")
  2. de même avec la 2ieme partie "Budget/Réalisé/Synthèse" : le codage VBA ajoute BRS dans la partie Projet et BRS PROV dans la partie provisions en "colonne CA" ?
    • sachant que 1 nouvelle ligne Projet peut être ajouté dans la partie "Projet" (ex: 2200TRAZE) mais jamais dans la partie "provisions"
    • elle débute ligne 44 si 2 nouvelles lignes projet s'ajoutent
J'ai joint un fichier illustratif
Merci beaucoup pour votre aide.

1648471712817.png

1648473682991.png
 

Pièces jointes

  • RAF BRS.xlsm
    35.4 KB · Affichages: 7
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour Onyirimba,

Voyez le fichier joint et cette macro dans le code de la feuille :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If TypeName([Projet1,Projet2,Provisions1,Provisions2]) <> "Range" Then _
    MsgBox "Nommez les 4 cellules Projet1, Projet2, Provisions1, Provisions2 !", 48: Exit Sub
Application.EnableEvents = False 'désactive les évènements
Intersect(Range([Projet1].Cells(2, 1), [Provisions1].Cells(-1, 1)).EntireRow, [CA:CA]) = "RAF"
Intersect([Provisions1].Cells(2, 1).Resize(2).EntireRow, [CA:CA]) = "RAF PROV"
Intersect(Range([Projet2].Cells(2, 1), [Provisions2].Cells(-1, 1)).EntireRow, [CA:CA]) = "BRS"
Intersect([Provisions2].Cells(2, 1).Resize(2).EntireRow, [CA:CA]) = "BSR PROV"
Application.EnableEvents = True 'réactive les évènements
End Sub
Elle se déclenche automatiquement quand on modifie ou valide une cellule quelconque.

Elle utilise les 4 cellules nommées Projet1, Projet2, Provisions1, Provisions2.

A+
 

Pièces jointes

  • RAF BRS(1).xlsm
    40.4 KB · Affichages: 3

onyirimba

XLDnaute Occasionnel
Supporter XLD
Bonjour Onyirimba,

Voyez le fichier joint et cette macro dans le code de la feuille :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If TypeName([Projet1,Projet2,Provisions1,Provisions2]) <> "Range" Then _
    MsgBox "Nommez les 4 cellules Projet1, Projet2, Provisions1, Provisions2 !", 48: Exit Sub
Application.EnableEvents = False 'désactive les évènements
Intersect(Range([Projet1].Cells(2, 1), [Provisions1].Cells(-1, 1)).EntireRow, [CA:CA]) = "RAF"
Intersect([Provisions1].Cells(2, 1).Resize(2).EntireRow, [CA:CA]) = "RAF PROV"
Intersect(Range([Projet2].Cells(2, 1), [Provisions2].Cells(-1, 1)).EntireRow, [CA:CA]) = "BRS"
Intersect([Provisions2].Cells(2, 1).Resize(2).EntireRow, [CA:CA]) = "BSR PROV"
Application.EnableEvents = True 'réactive les évènements
End Sub
Elle se déclenche automatiquement quand on modifie ou valide une cellule quelconque.

Elle utilise les 4 cellules nommées Projet1, Projet2, Provisions1, Provisions2.

A+
Bonjour, la Macro fonctionne
Merci
 

Discussions similaires

Statistiques des forums

Discussions
315 095
Messages
2 116 166
Membres
112 675
dernier inscrit
Tazra_IMOU