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

remplir un tableau

5 réponses
Avatar
mireille
Bonjour !

En ci-joint le fichier qui me pose pb :
http://www.cijoint.fr/cjlink.php?file=cj200904/cijEcmB3oh.xls

J'ai besoin d'une macro VBA pour remplir la feuiile "Delays Distribution by
Dpt" (ou DDD) avec les informations de la feuille "Calculs".
Et bien sûr, le tableau de la feuille "Calculs" peut changer. Les colonnes
restent les mêmes, mais je peux avoir plus de lignes.
La colonne C contient la même information de ligne 1 à la fin.
Le colonne B ne contient pas de doublons.

Dans la colonne B de feuille "Calculs", il y a le Dpt (qui correspond à
colonne B de la feuille "DDD")
La colonne C indique où les résultats (dans les colonnes D, E, F) doivent
être écrits dans la feuille DDD.
Si cells(1,3)="Q1 / T1" alors on copie D, E, F de feuille "Calculs" dans C,
D, E de DDD
Si cells(1,3) = "Q2 / T2" alors on copie D, E, F de feuille "Calculs" dans
F, G, H de DDD
et ainsi de suite

Merci pour votre aide,
Parce que sinon, j'en ai pour tout le week-end (au minimum !)

Mireille

5 réponses

Avatar
MichDenis
Bonjour Mireille,

Tu colles la procédure suivante dans un module standard :

Attention, dans le document que tu as publié,
Calculs = Sheet7
Delays Distribution by Dpt = Sheet8

Sheet7 et Sheet8 représente la propriété "Name" des
objets "Feuille" visible dans la fenêtre VBE.
Tu devras adapter leur nom dans le code si dans
ton application, ces noms sont différents.

'-------------------------------------------
Sub test()
Dim Rg As Range, C As Range
Dim JeTrouveDans As Range
Application.ScreenUpdating = False
Application.EnableEvents = False
With Sheet7
Set Rg = .Range("B1:B" & _
.Range("B65536").End(xlUp).Row)
End With

With Sheet8
Set JeTrouveDans = .Range("B1:B" & _
.Range("B65536").End(xlUp).Row)
End With
On Error Resume Next
For Each C In Rg
JeTrouveDans.Find(what:=Trim(C), LookIn:=xlValues) _
.Offset(, 1) = C.Offset(, 2).Value
Next
Application.EnableEvents = True
End Sub
'-------------------------------------------



"mireille" a écrit dans le message de groupe de
discussion :
Bonjour !

En ci-joint le fichier qui me pose pb :
http://www.cijoint.fr/cjlink.php?file=cj200904/cijEcmB3oh.xls

J'ai besoin d'une macro VBA pour remplir la feuiile "Delays Distribution by
Dpt" (ou DDD) avec les informations de la feuille "Calculs".
Et bien sûr, le tableau de la feuille "Calculs" peut changer. Les colonnes
restent les mêmes, mais je peux avoir plus de lignes.
La colonne C contient la même information de ligne 1 à la fin.
Le colonne B ne contient pas de doublons.

Dans la colonne B de feuille "Calculs", il y a le Dpt (qui correspond à
colonne B de la feuille "DDD")
La colonne C indique où les résultats (dans les colonnes D, E, F) doivent
être écrits dans la feuille DDD.
Si cells(1,3)="Q1 / T1" alors on copie D, E, F de feuille "Calculs" dans C,
D, E de DDD
Si cells(1,3) = "Q2 / T2" alors on copie D, E, F de feuille "Calculs" dans
F, G, H de DDD
et ainsi de suite

Merci pour votre aide,
Parce que sinon, j'en ai pour tout le week-end (au minimum !)

Mireille
Avatar
mireille
Merci pour ta réponse.

Mais j'ai 2 pbs.

1/ La macro fonctionne bien avec le fichier ci-joint, mais elle ne copie
aucun résultat dans le tableau.

2/ si je copie la macro dans mon fichier et que je l'intègre à la macro
existante, ça bug. Pourtant les feuilles ont les mêmes noms VBA que le
fichier ci-joint. L'erreur est "Run Time Error 424, Object required" à la
ligne 6 (Set R ...)

merci pour ton aide

"MichDenis" a écrit :

Bonjour Mireille,

Tu colles la procdure suivante dans un module standard :

Attention, dans le document que tu as publi,
Calculs = Sheet7
Delays Distribution by Dpt = Sheet8

Sheet7 et Sheet8 reprsente la proprit "Name" des
objets "Feuille" visible dans la fentre VBE.
Tu devras adapter leur nom dans le code si dans
ton application, ces noms sont diffrents.

'-------------------------------------------
Sub test()
Dim Rg As Range, C As Range
Dim JeTrouveDans As Range
Application.ScreenUpdating = False
Application.EnableEvents = False
With Sheet7
Set Rg = .Range("B1:B" & _
.Range("B65536").End(xlUp).Row)
End With

With Sheet8
Set JeTrouveDans = .Range("B1:B" & _
.Range("B65536").End(xlUp).Row)
End With
On Error Resume Next
For Each C In Rg
JeTrouveDans.Find(what:=Trim(C), LookIn:=xlValues) _
.Offset(, 1) = C.Offset(, 2).Value
Next
Application.EnableEvents = True
End Sub
'-------------------------------------------



"mireille" a crit dans le message de groupe de
discussion :
Bonjour !

En ci-joint le fichier qui me pose pb :
http://www.cijoint.fr/cjlink.php?file=cj200904/cijEcmB3oh.xls

J'ai besoin d'une macro VBA pour remplir la feuiile "Delays Distribution by
Dpt" (ou DDD) avec les informations de la feuille "Calculs".
Et bien sr, le tableau de la feuille "Calculs" peut changer. Les colonnes
restent les mmes, mais je peux avoir plus de lignes.
La colonne C contient la mme information de ligne 1 la fin.
Le colonne B ne contient pas de doublons.

Dans la colonne B de feuille "Calculs", il y a le Dpt (qui correspond
colonne B de la feuille "DDD")
La colonne C indique o les rsultats (dans les colonnes D, E, F) doivent
tre crits dans la feuille DDD.
Si cells(1,3)="Q1 / T1" alors on copie D, E, F de feuille "Calculs" dans C,
D, E de DDD
Si cells(1,3) = "Q2 / T2" alors on copie D, E, F de feuille "Calculs" dans
F, G, H de DDD
et ainsi de suite

Merci pour votre aide,
Parce que sinon, j'en ai pour tout le week-end (au minimum !)

Mireille




Avatar
MichDenis
J'ai modifié un peu la procédure et cela devrait rouler.

Dans le fichier exemple que tu as soumise, il y a 2 items
en feuille "Calculs" colonne B:B qu'on ne retrouve pas en feuille
Delays Distribution by Dpt. colonne B:B

La macro va te lister les valeurs qui n'ont pas leur équivalent le cas échéant !

'------------------------------------------------------------
Sub test()

Dim Rg As Range, C As Range
Dim JeTrouveDans As Range
Dim Message As String
Application.ScreenUpdating = True
Application.EnableEvents = False
With Sheet7
Set Rg = .Range("B1:B" & _
.Range("B65536").End(xlUp).Row)
End With

With Sheet8
Set JeTrouveDans = .Range("B1:B" & _
.Range("B65536").End(xlUp).Row)
End With
On Error Resume Next
For Each C In Rg
JeTrouveDans.Find(what:=Trim(C), LookIn:=xlValues, _
Lookat:=xlPart).Offset(, 1) = C.Offset(, 2).Value
If Err <> 0 Then
Message = Message & C.Value & vbCrLf
Err = 0
End If
Next
Application.EnableEvents = True
If Message <> "" Then
MsgBox "La procédure n'a pas trouvé ces items " & vbCrLf & _
"dans la feuille ""Delays Distribution by Dpt""." & _
vbCrLf & Message, vbCritical, "Attention"
End If
End Sub
'------------------------------------------------------------



"mireille" a écrit dans le message de groupe de
discussion :
Merci pour ta réponse.

Mais j'ai 2 pbs.

1/ La macro fonctionne bien avec le fichier ci-joint, mais elle ne copie
aucun résultat dans le tableau.

2/ si je copie la macro dans mon fichier et que je l'intègre à la macro
existante, ça bug. Pourtant les feuilles ont les mêmes noms VBA que le
fichier ci-joint. L'erreur est "Run Time Error 424, Object required" à la
ligne 6 (Set R ...)

merci pour ton aide

"MichDenis" a écrit :

Bonjour Mireille,

Tu colles la procdure suivante dans un module standard :

Attention, dans le document que tu as publi,
Calculs = Sheet7
Delays Distribution by Dpt = Sheet8

Sheet7 et Sheet8 reprsente la proprit "Name" des
objets "Feuille" visible dans la fentre VBE.
Tu devras adapter leur nom dans le code si dans
ton application, ces noms sont diffrents.

'-------------------------------------------
Sub test()
Dim Rg As Range, C As Range
Dim JeTrouveDans As Range
Application.ScreenUpdating = False
Application.EnableEvents = False
With Sheet7
Set Rg = .Range("B1:B" & _
.Range("B65536").End(xlUp).Row)
End With

With Sheet8
Set JeTrouveDans = .Range("B1:B" & _
.Range("B65536").End(xlUp).Row)
End With
On Error Resume Next
For Each C In Rg
JeTrouveDans.Find(what:=Trim(C), LookIn:=xlValues) _
.Offset(, 1) = C.Offset(, 2).Value
Next
Application.EnableEvents = True
End Sub
'-------------------------------------------



"mireille" a crit dans le message de groupe de
discussion :
Bonjour !

En ci-joint le fichier qui me pose pb :
http://www.cijoint.fr/cjlink.php?file=cj200904/cijEcmB3oh.xls

J'ai besoin d'une macro VBA pour remplir la feuiile "Delays Distribution by
Dpt" (ou DDD) avec les informations de la feuille "Calculs".
Et bien sr, le tableau de la feuille "Calculs" peut changer. Les colonnes
restent les mmes, mais je peux avoir plus de lignes.
La colonne C contient la mme information de ligne 1 la fin.
Le colonne B ne contient pas de doublons.

Dans la colonne B de feuille "Calculs", il y a le Dpt (qui correspond
colonne B de la feuille "DDD")
La colonne C indique o les rsultats (dans les colonnes D, E, F) doivent
tre crits dans la feuille DDD.
Si cells(1,3)="Q1 / T1" alors on copie D, E, F de feuille "Calculs" dans C,
D, E de DDD
Si cells(1,3) = "Q2 / T2" alors on copie D, E, F de feuille "Calculs" dans
F, G, H de DDD
et ainsi de suite

Merci pour votre aide,
Parce que sinon, j'en ai pour tout le week-end (au minimum !)

Mireille




Avatar
mireille
Merci, un énorme merci !

Bon, j'avoue : j'ai un peu bidouillé ta macro !
J'étais bien obligée parce qu'elle refusait de fonctionner quand je l'ai
integrée dans mon fichier initial. Et j'ai bien vérifié que Sheet7 et Sheet8
désignaient les bonnes feuilles. MAis il y avait un pb avec la ligne "set rg=
.range ..."

Bon ma macro est surement moins "belle" que la tienne mais elle marche !
Merci et bon week-end de Pâques

"MichDenis" a écrit :

J'ai modifi un peu la procdure et cela devrait rouler.

Dans le fichier exemple que tu as soumise, il y a 2 items
en feuille "Calculs" colonne B:B qu'on ne retrouve pas en feuille
Delays Distribution by Dpt. colonne B:B

La macro va te lister les valeurs qui n'ont pas leur quivalent le cas chant !

'------------------------------------------------------------
Sub test()

Dim Rg As Range, C As Range
Dim JeTrouveDans As Range
Dim Message As String
Application.ScreenUpdating = True
Application.EnableEvents = False
With Sheet7
Set Rg = .Range("B1:B" & _
.Range("B65536").End(xlUp).Row)
End With

With Sheet8
Set JeTrouveDans = .Range("B1:B" & _
.Range("B65536").End(xlUp).Row)
End With
On Error Resume Next
For Each C In Rg
JeTrouveDans.Find(what:=Trim(C), LookIn:=xlValues, _
Lookat:=xlPart).Offset(, 1) = C.Offset(, 2).Value
If Err <> 0 Then
Message = Message & C.Value & vbCrLf
Err = 0
End If
Next
Application.EnableEvents = True
If Message <> "" Then
MsgBox "La procdure n'a pas trouv ces items " & vbCrLf & _
"dans la feuille ""Delays Distribution by Dpt""." & _
vbCrLf & Message, vbCritical, "Attention"
End If
End Sub
'------------------------------------------------------------



"mireille" a crit dans le message de groupe de
discussion :
Merci pour ta rponse.

Mais j'ai 2 pbs.

1/ La macro fonctionne bien avec le fichier ci-joint, mais elle ne copie
aucun rsultat dans le tableau.

2/ si je copie la macro dans mon fichier et que je l'intgre la macro
existante, a bug. Pourtant les feuilles ont les mmes noms VBA que le
fichier ci-joint. L'erreur est "Run Time Error 424, Object required" la
ligne 6 (Set R ...)

merci pour ton aide

"MichDenis" a crit :

> Bonjour Mireille,
>
> Tu colles la procdure suivante dans un module standard :
>
> Attention, dans le document que tu as publi,
> Calculs = Sheet7
> Delays Distribution by Dpt = Sheet8
>
> Sheet7 et Sheet8 reprsente la proprit "Name" des
> objets "Feuille" visible dans la fentre VBE.
> Tu devras adapter leur nom dans le code si dans
> ton application, ces noms sont diffrents.
>
> '-------------------------------------------
> Sub test()
> Dim Rg As Range, C As Range
> Dim JeTrouveDans As Range
> Application.ScreenUpdating = False
> Application.EnableEvents = False
> With Sheet7
> Set Rg = .Range("B1:B" & _
> .Range("B65536").End(xlUp).Row)
> End With
>
> With Sheet8
> Set JeTrouveDans = .Range("B1:B" & _
> .Range("B65536").End(xlUp).Row)
> End With
> On Error Resume Next
> For Each C In Rg
> JeTrouveDans.Find(what:=Trim(C), LookIn:=xlValues) _
> .Offset(, 1) = C.Offset(, 2).Value
> Next
> Application.EnableEvents = True
> End Sub
> '-------------------------------------------
>
>
>
> "mireille" a crit dans le message de groupe de
> discussion :
> Bonjour !
>
> En ci-joint le fichier qui me pose pb :
> http://www.cijoint.fr/cjlink.php?file=cj200904/cijEcmB3oh.xls
>
> J'ai besoin d'une macro VBA pour remplir la feuiile "Delays Distribution by
> Dpt" (ou DDD) avec les informations de la feuille "Calculs".
> Et bien sr, le tableau de la feuille "Calculs" peut changer. Les colonnes
> restent les mmes, mais je peux avoir plus de lignes.
> La colonne C contient la mme information de ligne 1 la fin.
> Le colonne B ne contient pas de doublons.
>
> Dans la colonne B de feuille "Calculs", il y a le Dpt (qui correspond
> colonne B de la feuille "DDD")
> La colonne C indique o les rsultats (dans les colonnes D, E, F) doivent
> tre crits dans la feuille DDD.
> Si cells(1,3)="Q1 / T1" alors on copie D, E, F de feuille "Calculs" dans C,
> D, E de DDD
> Si cells(1,3) = "Q2 / T2" alors on copie D, E, F de feuille "Calculs" dans
> F, G, H de DDD
> et ainsi de suite
>
> Merci pour votre aide,
> Parce que sinon, j'en ai pour tout le week-end (au minimum !)
>
> Mireille
>
>



Avatar
MichDenis
La macro est dans le module de la feuille Calculs

voici ton fichier avec la macro intégrée et elle fonctionne très bien.

http://cjoint.com/?emdQSAK24o