OVH Cloud OVH Cloud

insertions automatiques triées au bon endroit

2 réponses
Avatar
zrd
Bonjour,

Je part de 2 classeurs, l'un est la "base", le second la Mise A Jour,
omment incorporer les elements de la MAJ dans la base sachant que
ce que je veux c'est recuperer c'est le contenu d'une ligne.
Ce contenu je le recupere que si je reconnais dans la MAJ un contenu de
cellule est equivalent au contenu d'une cellule de la base.
Il faudrait qu'en plus les nouvelles lignes se positionnent a la fin des
"enregistrements" qui ont pour contenu la cellule de la base, en creeant les
insertion de lignes necessaires

exemple
BASE :
Nom Date ref Mont
A 1 xx xx
A 2 xx xx
A 3 xx xx
Tot A XXX

B 1 xx xx
B 3 xx xx
Tot B XXX

C 1 xx xx
C 2 xx xx
C 4 xx xx
Tot C XXX


MAJ :
A 5 xx xx
B 5 xx xx
B 6 xx xx
C 6 xx xx

Apres operations :
BASE :
Nom Date ref Mont
A 1 xx xx
A 2 xx xx
A 3 xx xx
A 5 xx xx
Tot A XXX

B 1 xx xx
B 3 xx xx
B 5 xx xx
B 6 xx xx
Tot B XXX


C 1 xx xx
C 2 xx xx
C 4 xx xx
C 6 xx xx
Tot C XXX

Je suis sur que parmis vous certains auront des pistes, surtout pour
simplifier tt ca.

Merci
*

2 réponses

Avatar
Jean-François Aubert
Salut zrd,

Pour les 2 classeurs:
-en A1:D1 -->> les étiquettes de colonnes
Pour le classeur Mise A Jour.xls:
-les données en A2:Dx
Pour le classeur base.xls:
-les données en A2:Dx, avec ou sans ligne vide entre les groupes de noms
-il faut définir chaque plage de Noms ( colonne A), y compris la ligne Tot... .
par Intertion / Nom / Définir , Noms dans le classeur : z et le nom des personnes comme ceci :
zA, zB, zC , etc....

'*************************************
Sub yy()
Dim wk_M_A_Jour
Dim wk_Base
Dim qui, quoi, i, Li1, Li2

' ces 2 lignes sont à adapter
Set wk_M_A_Jour = Workbooks("Mise A Jour.xls").Sheets("feuil1")
Set wk_Base = Workbooks("base.xls").Sheets("feuil1")


With wk_M_A_Jour
For i = 2 To .[a65536].End(xlUp).Row
qui = "z" & .Cells(i, 1)
Set quoi = .Range(.Cells(i, 1), .Cells(i, 4))
With wk_Base
.Range(qui).Item(wk_Base.Range(qui) _
.Count).EntireRow.Insert Shift:=xlDown
quoi .Copy Destination:=.Range(qui) _
.Item(wk_Base.Range(qui).Count - 1)
'ou pour supprimer les valeurs de M_A_Jour
'quoi .Cut Destination:=.Range(qui) _
.Item(wk_Base.Range(qui).Count - 1)
Li2 = .Range(qui).Item(wk_Base.Range(qui).Count - 1).Row
Li1 = (Li2 - wk_Base.Range(qui).Count) + 2
.Range(qui).Item(wk_Base.Range(qui).Count).Offset(0, 3) = _
Application.Sum(Range("D" & Li1 & ":D" & Li2))
End With
Next
End With
Set wk_M_A_Jour = Nothing: Set wk_Base = Nothing
Set quoi = Nothing
End Sub

'**********************************

--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}


"zrd" a écrit dans le message de
news:
Bonjour,

Je part de 2 classeurs, l'un est la "base", le second la Mise A Jour,
omment incorporer les elements de la MAJ dans la base sachant que
ce que je veux c'est recuperer c'est le contenu d'une ligne.
Ce contenu je le recupere que si je reconnais dans la MAJ un contenu de
cellule est equivalent au contenu d'une cellule de la base.
Il faudrait qu'en plus les nouvelles lignes se positionnent a la fin des
"enregistrements" qui ont pour contenu la cellule de la base, en creeant les
insertion de lignes necessaires

exemple
BASE :
Nom Date ref Mont
A 1 xx xx
A 2 xx xx
A 3 xx xx
Tot A XXX

B 1 xx xx
B 3 xx xx
Tot B XXX

C 1 xx xx
C 2 xx xx
C 4 xx xx
Tot C XXX


MAJ :
A 5 xx xx
B 5 xx xx
B 6 xx xx
C 6 xx xx

Apres operations :
BASE :
Nom Date ref Mont
A 1 xx xx
A 2 xx xx
A 3 xx xx
A 5 xx xx
Tot A XXX

B 1 xx xx
B 3 xx xx
B 5 xx xx
B 6 xx xx
Tot B XXX


C 1 xx xx
C 2 xx xx
C 4 xx xx
C 6 xx xx
Tot C XXX

Je suis sur que parmis vous certains auront des pistes, surtout pour
simplifier tt ca.

Merci
*




Avatar
zrd
Bonjour,


"Jean-François Aubert" <à a écrit dans le message
news:
Salut zrd,

Pour les 2 classeurs:
-en A1:D1 -->> les étiquettes de colonnes
Pour le classeur Mise A Jour.xls:
-les données en A2:Dx
Pour le classeur base.xls:
-les données en A2:Dx, avec ou sans ligne vide entre les groupes de
noms

-il faut définir chaque plage de Noms ( colonne A), y compris la ligne
Tot... .

par Intertion / Nom / Définir , Noms dans le classeur : z et le nom des
personnes comme ceci :

zA, zB, zC , etc....

'*************************************
Sub yy()
Dim wk_M_A_Jour
Dim wk_Base
Dim qui, quoi, i, Li1, Li2

' ces 2 lignes sont à adapter
Set wk_M_A_Jour = Workbooks("Mise A Jour.xls").Sheets("feuil1")
Set wk_Base = Workbooks("base.xls").Sheets("feuil1")


With wk_M_A_Jour
For i = 2 To .[a65536].End(xlUp).Row
qui = "z" & .Cells(i, 1)
Set quoi = .Range(.Cells(i, 1), .Cells(i, 4))
With wk_Base
.Range(qui).Item(wk_Base.Range(qui) _
.Count).EntireRow.Insert Shift:=xlDown
quoi .Copy Destination:=.Range(qui) _
.Item(wk_Base.Range(qui).Count - 1)
'ou pour supprimer les valeurs de M_A_Jour
'quoi .Cut Destination:=.Range(qui) _
.Item(wk_Base.Range(qui).Count - 1)
Li2 = .Range(qui).Item(wk_Base.Range(qui).Count - 1).Row
Li1 = (Li2 - wk_Base.Range(qui).Count) + 2
.Range(qui).Item(wk_Base.Range(qui).Count).Offset(0, 3) _
Application.Sum(Range("D" & Li1 & ":D" & Li2))
End With
Next
End With
Set wk_M_A_Jour = Nothing: Set wk_Base = Nothing
Set quoi = Nothing
End Sub

'**********************************

--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}


"zrd" a écrit dans le message de
news:
Bonjour,
Je part de 2 classeurs, l'un est la "base", le second la Mise A Jour,
omment incorporer les elements de la MAJ dans la base sachant que
ce que je veux c'est recuperer c'est le contenu d'une ligne.
Ce contenu je le recupere que si je reconnais dans la MAJ un contenu de
cellule est equivalent au contenu d'une cellule de la base.
Il faudrait qu'en plus les nouvelles lignes se positionnent a la fin des
"enregistrements" qui ont pour contenu la cellule de la base, en creeant
les


insertion de lignes necessaires
Je suis sur que parmis vous certains auront des pistes, surtout pour
simplifier tt ca.
Merci
*



Merci Jean-François,
je vais adapter ca
Quand on voit ce que l'on peut faire avec excel, on en est presque a tombe
amoureux de ce soft ;-)))
En tous cas ca donne envie de ce perfectionner

@+