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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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 *
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" <zorroider@libertyNOSPAMsurf.fr> a écrit dans le message de
news:uHUaz52rDHA.560@TK2MSFTNGP11.phx.gbl...
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.
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 *
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
@+
Bonjour,
"Jean-François Aubert" <àOterjfaubert@bluewin.ch> a écrit dans le message
news: 3fbd6081_3@news.bluewin.ch...
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" <zorroider@libertyNOSPAMsurf.fr> a écrit dans le message de
news:uHUaz52rDHA.560@TK2MSFTNGP11.phx.gbl...
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
"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