Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

mise a jour d'un tableau Excel

8 réponses
Avatar
arnaud
Bonjour !
dans un fichier, j'ai une feuille "donnees" qui se remet à jour tous les
mois avec dans la colonne A, la liste des produits vendus.
Dans une autre feuille "liste", j'ai une liste existante de produits.
Je veux qu'excel me rajoute en fin de ma liste existante , les
enregistrements de "donnees" non présents dans ma liste !
Quelle macro réaliser ??


Merci à tous !!!

8 réponses

Avatar
Shnoulle
Bonjour Arnaud,

Si l'objectif est juste de compléter la liste, une solution sans
utiliser le VBA
=SI(ESTNA(EQUIV(Feuil2!A1;Feuil2!$A:$A;0));"";EQUIV(Feuil2!A1;Feuil2!$A:$A;0))

A recopier sur le nombres total de la liste,

Sinon l'idée que j'aurais en VBA:
Constitution d'un tableau contenant les objet de la liste, avec un test
équivalent au précédent.

Puis boucle pour écrire les objets du tableau à la fin de tes données,

Je pourrais approfondir le sujet si personne ne répond avant moi et si
la première solution ne te satisfait pas.

A+
Shnoulle



arnaud wrote:
Bonjour !
dans un fichier, j'ai une feuille "donnees" qui se remet à jour tous les
mois avec dans la colonne A, la liste des produits vendus.
Dans une autre feuille "liste", j'ai une liste existante de produits.
Je veux qu'excel me rajoute en fin de ma liste existante , les
enregistrements de "donnees" non présents dans ma liste !
Quelle macro réaliser ??


Merci à tous !!!




Avatar
arnaud
Les données des deux feuilles ne sont pas obligatoirement dans le même
ordre.
Je préférerai passer en VB !
Merci de t'interesser à mon cas !
Arnaud



"Shnoulle" a écrit dans le message de news:
#
Bonjour Arnaud,

Si l'objectif est juste de compléter la liste, une solution sans
utiliser le VBA

=SI(ESTNA(EQUIV(Feuil2!A1;Feuil2!$A:$A;0));"";EQUIV(Feuil2!A1;Feuil2!$A:$A;0

))

A recopier sur le nombres total de la liste,

Sinon l'idée que j'aurais en VBA:
Constitution d'un tableau contenant les objet de la liste, avec un test
équivalent au précédent.

Puis boucle pour écrire les objets du tableau à la fin de tes données,

Je pourrais approfondir le sujet si personne ne répond avant moi et si
la première solution ne te satisfait pas.

A+
Shnoulle



arnaud wrote:
Bonjour !
dans un fichier, j'ai une feuille "donnees" qui se remet à jour tous les
mois avec dans la colonne A, la liste des produits vendus.
Dans une autre feuille "liste", j'ai une liste existante de produits.
Je veux qu'excel me rajoute en fin de ma liste existante , les
enregistrements de "donnees" non présents dans ma liste !
Quelle macro réaliser ??


Merci à tous !!!







Avatar
ru-th
Salut

si j'ai bien compris
dans le module de la feuille données
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column > 1 Then Exit Sub
If Application.CountIf([liste!a:a], Target.Value) = 0 Then _
Sheets("liste").Range("a" & [liste!a65536].End(xlUp).Row + 1) = Target.Value
End Sub

je suppose si tu utilises une liste avec validation faisant référence à une
plage nommée par
decaler(liste!$a$a!a1;;;nbval(liste!$a$a))
a+
rural thierry

"arnaud" a écrit dans le message de news:

Bonjour !
dans un fichier, j'ai une feuille "donnees" qui se remet à jour tous les
mois avec dans la colonne A, la liste des produits vendus.
Dans une autre feuille "liste", j'ai une liste existante de produits.
Je veux qu'excel me rajoute en fin de ma liste existante , les
enregistrements de "donnees" non présents dans ma liste !
Quelle macro réaliser ??


Merci à tous !!!




Avatar
ru-th
decaler(liste!$a$a!a1;;;nbval(liste!$a$a))
hum !

decaler(liste!$a$1;;;nbval(liste!$a$a))


"ru-th" a écrit dans le message de news:
#
Salut

si j'ai bien compris
dans le module de la feuille données
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column > 1 Then Exit Sub
If Application.CountIf([liste!a:a], Target.Value) = 0 Then _
Sheets("liste").Range("a" & [liste!a65536].End(xlUp).Row + 1) Target.Value
End Sub

je suppose si tu utilises une liste avec validation faisant référence à
une

plage nommée par
a+
rural thierry

"arnaud" a écrit dans le message de news:

Bonjour !
dans un fichier, j'ai une feuille "donnees" qui se remet à jour tous les
mois avec dans la colonne A, la liste des produits vendus.
Dans une autre feuille "liste", j'ai une liste existante de produits.
Je veux qu'excel me rajoute en fin de ma liste existante , les
enregistrements de "donnees" non présents dans ma liste !
Quelle macro réaliser ??


Merci à tous !!!








Avatar
arnaud
en fait, j'ai fait la copie de ma colonne A dans la feuille donnees sur la
feuille liste, puis je souhaite que la liste présente sur la feuille liste
se remette à jour automatiquement.
J'ai fait cela pour faire le mois de janvier.
je veux qu'excel verifie ma liste de données de février et integre les
articles non présents en janvier dans ma colonne de ma feuille liste

C'est un moyen pour avoir toujours mon tableau à jour !
J'ai testé la macro, j'ai toujours un débogage, je dois oublier quelque
chose...



"ru-th" a écrit dans le message de news:
#
decaler(liste!$a$a!a1;;;nbval(liste!$a$a))
hum !

decaler(liste!$a$1;;;nbval(liste!$a$a))


"ru-th" a écrit dans le message de news:
#
Salut

si j'ai bien compris
dans le module de la feuille données
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column > 1 Then Exit Sub
If Application.CountIf([liste!a:a], Target.Value) = 0 Then _
Sheets("liste").Range("a" & [liste!a65536].End(xlUp).Row + 1) > Target.Value
End Sub

je suppose si tu utilises une liste avec validation faisant référence à
une

plage nommée par
a+
rural thierry

"arnaud" a écrit dans le message de
news:



Bonjour !
dans un fichier, j'ai une feuille "donnees" qui se remet à jour tous
les



mois avec dans la colonne A, la liste des produits vendus.
Dans une autre feuille "liste", j'ai une liste existante de produits.
Je veux qu'excel me rajoute en fin de ma liste existante , les
enregistrements de "donnees" non présents dans ma liste !
Quelle macro réaliser ??


Merci à tous !!!












Avatar
ru-th
Un peu de mal à voir exactement ce que tu veux faire

éventuellement si tu n'as pas d'autres réponses
envoies ton fichier sur
en ôtant le machin
j'y jeterai un coup d'oeil ce soir
a+
rural thierry

"arnaud" a écrit dans le message de news:

en fait, j'ai fait la copie de ma colonne A dans la feuille donnees sur la
feuille liste, puis je souhaite que la liste présente sur la feuille liste
se remette à jour automatiquement.
J'ai fait cela pour faire le mois de janvier.
je veux qu'excel verifie ma liste de données de février et integre les
articles non présents en janvier dans ma colonne de ma feuille liste

C'est un moyen pour avoir toujours mon tableau à jour !
J'ai testé la macro, j'ai toujours un débogage, je dois oublier quelque
chose...



"ru-th" a écrit dans le message de news:
#
decaler(liste!$a$a!a1;;;nbval(liste!$a$a))
hum !

decaler(liste!$a$1;;;nbval(liste!$a$a))


"ru-th" a écrit dans le message de news:
#
Salut

si j'ai bien compris
dans le module de la feuille données
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column > 1 Then Exit Sub
If Application.CountIf([liste!a:a], Target.Value) = 0 Then _
Sheets("liste").Range("a" & [liste!a65536].End(xlUp).Row + 1) > > Target.Value
End Sub

je suppose si tu utilises une liste avec validation faisant référence
à



une
plage nommée par
a+
rural thierry

"arnaud" a écrit dans le message de
news:



Bonjour !
dans un fichier, j'ai une feuille "donnees" qui se remet à jour tous
les



mois avec dans la colonne A, la liste des produits vendus.
Dans une autre feuille "liste", j'ai une liste existante de
produits.




Je veux qu'excel me rajoute en fin de ma liste existante , les
enregistrements de "donnees" non présents dans ma liste !
Quelle macro réaliser ??


Merci à tous !!!
















Avatar
Shnoulle
Salut Arnaud,

Il doit y avoir moyen de faire mieux, mais ca marche

Sub Main()
Dim Cellule
Dim Trouve
Dim TabValeur() As String
Dim compteur As Long
Dim Ligne As Long
ReDim TabValeur(0)

For Each Cellule In Feuil2.Range("Liste").Cells
Set Trouve = (Feuil1.[A:A].Find(Cellule.Value, Feuil1.[A:A].Item(1),
xlValues, xlWhole, xlByRows, xlNext))
If (Trouve Is Nothing) Then
ReDim Preserve TabValeur(UBound(TabValeur) + 1)
TabValeur(UBound(TabValeur)) = Cellule.Value
End If
Next Cellule

Ligne = Feuil1.[A:A].Find("*", Feuil1.[A:IV].Item(1), , , , xlPrevious).Row

For compteur = 1 To UBound(TabValeur)
Feuil1.Cells(Ligne + compteur, 1).Value = TabValeur(compteur)
Next compteur

End Sub


A+


arnaud wrote:
Les données des deux feuilles ne sont pas obligatoirement dans le même
ordre.
Je préférerai passer en VB !
Merci de t'interesser à mon cas !
Arnaud



"Shnoulle" a écrit dans le message de news:
#

Bonjour Arnaud,

Si l'objectif est juste de compléter la liste, une solution sans
utiliser le VBA



=SI(ESTNA(EQUIV(Feuil2!A1;Feuil2!$A:$A;0));"";EQUIV(Feuil2!A1;Feuil2!$A:$A;0
))

A recopier sur le nombres total de la liste,

Sinon l'idée que j'aurais en VBA:
Constitution d'un tableau contenant les objet de la liste, avec un test
équivalent au précédent.

Puis boucle pour écrire les objets du tableau à la fin de tes données,

Je pourrais approfondir le sujet si personne ne répond avant moi et si
la première solution ne te satisfait pas.

A+
Shnoulle



arnaud wrote:

Bonjour !
dans un fichier, j'ai une feuille "donnees" qui se remet à jour tous les
mois avec dans la colonne A, la liste des produits vendus.
Dans une autre feuille "liste", j'ai une liste existante de produits.
Je veux qu'excel me rajoute en fin de ma liste existante , les
enregistrements de "donnees" non présents dans ma liste !
Quelle macro réaliser ??


Merci à tous !!!











Avatar
Shnoulle
Si ru-th peut t'aider , il trouvera ceratinement beaucoup mieux !!!!

A+


Shnoulle wrote:
Salut Arnaud,

Il doit y avoir moyen de faire mieux, mais ca marche

Sub Main()
Dim Cellule
Dim Trouve
Dim TabValeur() As String
Dim compteur As Long
Dim Ligne As Long
ReDim TabValeur(0)

For Each Cellule In Feuil2.Range("Liste").Cells
Set Trouve = (Feuil1.[A:A].Find(Cellule.Value, Feuil1.[A:A].Item(1),
xlValues, xlWhole, xlByRows, xlNext))
If (Trouve Is Nothing) Then
ReDim Preserve TabValeur(UBound(TabValeur) + 1)
TabValeur(UBound(TabValeur)) = Cellule.Value
End If
Next Cellule

Ligne = Feuil1.[A:A].Find("*", Feuil1.[A:IV].Item(1), , , , xlPrevious).Row

For compteur = 1 To UBound(TabValeur)
Feuil1.Cells(Ligne + compteur, 1).Value = TabValeur(compteur)
Next compteur

End Sub


A+


arnaud wrote:

Les données des deux feuilles ne sont pas obligatoirement dans le même
ordre.
Je préférerai passer en VB !
Merci de t'interesser à mon cas !
Arnaud



"Shnoulle" a écrit dans le message de news:
#

Bonjour Arnaud,

Si l'objectif est juste de compléter la liste, une solution sans
utiliser le VBA



=SI(ESTNA(EQUIV(Feuil2!A1;Feuil2!$A:$A;0));"";EQUIV(Feuil2!A1;Feuil2!$A:$A;0
))

A recopier sur le nombres total de la liste,

Sinon l'idée que j'aurais en VBA:
Constitution d'un tableau contenant les objet de la liste, avec un test
équivalent au précédent.

Puis boucle pour écrire les objets du tableau à la fin de tes données,

Je pourrais approfondir le sujet si personne ne répond avant moi et si
la première solution ne te satisfait pas.

A+
Shnoulle



arnaud wrote:

Bonjour !
dans un fichier, j'ai une feuille "donnees" qui se remet à jour tous les
mois avec dans la colonne A, la liste des produits vendus.
Dans une autre feuille "liste", j'ai une liste existante de produits.
Je veux qu'excel me rajoute en fin de ma liste existante , les
enregistrements de "donnees" non présents dans ma liste !
Quelle macro réaliser ??


Merci à tous !!!