OVH Cloud OVH Cloud

Réaffecter automatiqument des données issues de 2 feuilles...

6 réponses
Avatar
Vincent J.
Bonjour,

Voila j'ai deus feuilles sur lesquels j'ai des données
La premiere feuille permet d'identifier des véhicules par un numéro:
A B
1 Nom Client
2 Nom Client2
3 Nom Client3

La deuxieme feuille permet de référencer les réparations éffectuée sur les
véhicules, sachant que pour un mail véhicule il peut y a voir plusieurs
lignes...

A B
1 Batterie
2 Lampes
2 Injecteur
3 Pneus

Comment faire pour que sur une 3° feuille, je puisse retrouver un tableau
qui compile automatiquement ces infos ensemble sous la forme:
A B C
1 Nom Client Batterie
2 Nom Client2 Lampes
3 Injecteur
4 Nom Client3 Pneus

Merci de votre aide...
Vincent

6 réponses

Avatar
Jacky
Bonjour,

Ceci peur-être:
La plage des numéros feuille1 nommée "Num"
La Plage des numeros feuille2 nommée "Mat"
'----------
Sub jj()
Cells.ClearContents
[a1] = "n°": [b1] = "Nom": [c1] = "Mat"
x = 2
For Each c In Range("num")
Range("a" & x) = c
Range("b" & x) = c.Offset(0, 1)
For Each m In Range("mat")
If m = c Then
Range("c" & x) = Sheets(2).Range("b" & m.Row)
x = x + 1
End If
Next
x = x + 1
Next
End Sub
'-----------
exemple ici:
http://cjoint.com/?comjuVYTs4

--
Salutations
JJ


"Vincent J." a écrit dans le message de news:

Bonjour,

Voila j'ai deus feuilles sur lesquels j'ai des données
La premiere feuille permet d'identifier des véhicules par un numéro:
A B
1 Nom Client
2 Nom Client2
3 Nom Client3

La deuxieme feuille permet de référencer les réparations éffectuée sur les
véhicules, sachant que pour un mail véhicule il peut y a voir plusieurs
lignes...

A B
1 Batterie
2 Lampes
2 Injecteur
3 Pneus

Comment faire pour que sur une 3° feuille, je puisse retrouver un tableau
qui compile automatiquement ces infos ensemble sous la forme:
A B C
1 Nom Client Batterie
2 Nom Client2 Lampes
3 Injecteur
4 Nom Client3 Pneus

Merci de votre aide...
Vincent



Avatar
Vincent J.
Bonjour,

C'est super !

Par contre comme je ne connais pas du tous les macros, je vois sur la ligne
suivante:
Range("c" & x) = Sheets(2).Range("b" & m.Row)
J'imagine que Sheets(2) correspond à la feuille2 du classeur.
Si la feuille à été renommée et n'est pas en position 2 dans le classeur
(exemple: Inter en position 4) , par quoi remplacer Sheets(2) ?

Merci !

Vincent



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

Bonjour,

Ceci peur-être:
La plage des numéros feuille1 nommée "Num"
La Plage des numeros feuille2 nommée "Mat"
'----------
Sub jj()
Cells.ClearContents
[a1] = "n°": [b1] = "Nom": [c1] = "Mat"
x = 2
For Each c In Range("num")
Range("a" & x) = c
Range("b" & x) = c.Offset(0, 1)
For Each m In Range("mat")
If m = c Then
Range("c" & x) = Sheets(2).Range("b" & m.Row)
x = x + 1
End If
Next
x = x + 1
Next
End Sub
'-----------
exemple ici:
http://cjoint.com/?comjuVYTs4

--
Salutations
JJ


"Vincent J." a écrit dans le message de news:

Bonjour,

Voila j'ai deus feuilles sur lesquels j'ai des données
La premiere feuille permet d'identifier des véhicules par un numéro:
A B
1 Nom Client
2 Nom Client2
3 Nom Client3

La deuxieme feuille permet de référencer les réparations éffectuée sur
les véhicules, sachant que pour un mail véhicule il peut y a voir
plusieurs lignes...

A B
1 Batterie
2 Lampes
2 Injecteur
3 Pneus

Comment faire pour que sur une 3° feuille, je puisse retrouver un tableau
qui compile automatiquement ces infos ensemble sous la forme:
A B C
1 Nom Client Batterie
2 Nom Client2 Lampes
3 Injecteur
4 Nom Client3 Pneus

Merci de votre aide...
Vincent







Avatar
Jacky
Re...
Alt+F11
Dans la fenêtre VbaProject (en haut à gauche)
Tu dois avoir quelque chose qui ressemble à ceci
*Feuil1(feuil1) ou Feuil1(le nom que tu as donné à la feuille 1)
*Feuil2(feuil2) ou Feuil2(le nom que tu as donné à la feuille 2)
etc...
Tu prends le n° de la feuille correspondant au nom que tu lui as donné
Ceci a comme avantage de garde 'toujours' la bonne feuille, même si son nom
est changée.

Le code peut être remplacé par:
Range("c" & x) = Sheets("NomDeLa feuille").Range("b" & m.Row)
Mais le code doit être modifié si un utilisateur change le nom de la feuille
--
Salutations
JJ


"Vincent J." a écrit dans le message de news:

Bonjour,

C'est super !

Par contre comme je ne connais pas du tous les macros, je vois sur la
ligne suivante:
Range("c" & x) = Sheets(2).Range("b" & m.Row)
J'imagine que Sheets(2) correspond à la feuille2 du classeur.
Si la feuille à été renommée et n'est pas en position 2 dans le classeur
(exemple: Inter en position 4) , par quoi remplacer Sheets(2) ?

Merci !

Vincent



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

Bonjour,

Ceci peur-être:
La plage des numéros feuille1 nommée "Num"
La Plage des numeros feuille2 nommée "Mat"
'----------
Sub jj()
Cells.ClearContents
[a1] = "n°": [b1] = "Nom": [c1] = "Mat"
x = 2
For Each c In Range("num")
Range("a" & x) = c
Range("b" & x) = c.Offset(0, 1)
For Each m In Range("mat")
If m = c Then
Range("c" & x) = Sheets(2).Range("b" & m.Row)
x = x + 1
End If
Next
x = x + 1
Next
End Sub
'-----------
exemple ici:
http://cjoint.com/?comjuVYTs4

--
Salutations
JJ


"Vincent J." a écrit dans le message de news:

Bonjour,

Voila j'ai deus feuilles sur lesquels j'ai des données
La premiere feuille permet d'identifier des véhicules par un numéro:
A B
1 Nom Client
2 Nom Client2
3 Nom Client3

La deuxieme feuille permet de référencer les réparations éffectuée sur
les véhicules, sachant que pour un mail véhicule il peut y a voir
plusieurs lignes...

A B
1 Batterie
2 Lampes
2 Injecteur
3 Pneus

Comment faire pour que sur une 3° feuille, je puisse retrouver un
tableau qui compile automatiquement ces infos ensemble sous la forme:
A B C
1 Nom Client Batterie
2 Nom Client2 Lampes
3 Injecteur
4 Nom Client3 Pneus

Merci de votre aide...
Vincent











Avatar
Jacky
Re....
Complément......
En donnant directement le" nom Vba" de la feuille, ni sa position ni le
changement de nom n'affecteront le code.
Tu trouves devant le nom entre parenthèse
Dans ton exemple
Feuil1= la feuille avec les N° et les noms
Feuil2= la feuille avec le n° et les accessoires
Feuil3= la feuille des résultats
Ce qui donne dans la code:
'---------------
Sub jj()
Feuil3.Cells.ClearContents
Feuil3.[a1] = "n°": Feuil3.[b1] = "Nom": Feuil3.[c1] = "Mat"
x = 2
For Each c In Range("num")
Feuil3.Range("a" & x) = c
Feuil3.Range("b" & x) = c.Offset(0, 1)
For Each m In Range("mat")
If m = c Then
Feuil3.Range("c" & x) = Feuil2.Range("b" & m.Row)
x = x + 1
End If
Next
x = x + 1
Next
End Sub
'----------

--
Salutations
JJ


"Vincent J." a écrit dans le message de news:

Bonjour,

C'est super !

Par contre comme je ne connais pas du tous les macros, je vois sur la
ligne suivante:
Range("c" & x) = Sheets(2).Range("b" & m.Row)
J'imagine que Sheets(2) correspond à la feuille2 du classeur.
Si la feuille à été renommée et n'est pas en position 2 dans le classeur
(exemple: Inter en position 4) , par quoi remplacer Sheets(2) ?

Merci !

Vincent



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

Bonjour,

Ceci peur-être:
La plage des numéros feuille1 nommée "Num"
La Plage des numeros feuille2 nommée "Mat"
'----------
Sub jj()
Cells.ClearContents
[a1] = "n°": [b1] = "Nom": [c1] = "Mat"
x = 2
For Each c In Range("num")
Range("a" & x) = c
Range("b" & x) = c.Offset(0, 1)
For Each m In Range("mat")
If m = c Then
Range("c" & x) = Sheets(2).Range("b" & m.Row)
x = x + 1
End If
Next
x = x + 1
Next
End Sub
'-----------
exemple ici:
http://cjoint.com/?comjuVYTs4

--
Salutations
JJ


"Vincent J." a écrit dans le message de news:

Bonjour,

Voila j'ai deus feuilles sur lesquels j'ai des données
La premiere feuille permet d'identifier des véhicules par un numéro:
A B
1 Nom Client
2 Nom Client2
3 Nom Client3

La deuxieme feuille permet de référencer les réparations éffectuée sur
les véhicules, sachant que pour un mail véhicule il peut y a voir
plusieurs lignes...

A B
1 Batterie
2 Lampes
2 Injecteur
3 Pneus

Comment faire pour que sur une 3° feuille, je puisse retrouver un
tableau qui compile automatiquement ces infos ensemble sous la forme:
A B C
1 Nom Client Batterie
2 Nom Client2 Lampes
3 Injecteur
4 Nom Client3 Pneus

Merci de votre aide...
Vincent











Avatar
Vincent J.
Merci pour ces précisions !

Vincent
Avatar
JB
Bonjour,

Sans VBA

=SI(Commandes!A1<>Commandes!A2;Commandes!A2;"")

http://cjoint.com/?cpjiHnfgcb

JB
On 15 fév, 01:30, "Vincent J." wrote:
Merci pour ces précisions !

Vincent