J'ai une macro qui fonctionne bien mais seulement pour une commande. Je ne
sais pas comment voici ma commande. Si quelqu'un peut trouver m'aider ce
serait grandement apprécié
-- Dim id, ligne As Integer
Worksheets("Info").Cells(18, 20).Copy
id = Worksheets("Info").Cells(2, 19).Value
With Worksheets("Membres")
.Activate
ligne = 10
While .Cells(ligne, 1) <> ""
If .Cells(ligne, 1) = id Then
.Cells(ligne, 15).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks:úlse, Transpose:úlse
'2e commande
Worksheets("Info").Cells(3, 20).Copy
id = Worksheets("Info").Cells(3, 19).Value
With Worksheets("Membres")
.Activate
ligne = 10
While .Cells(ligne, 1) <> ""
If .Cells(ligne, 1) = id Then
.Cells(ligne, 16).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks:úlse, Transpose:úlse
GoTo fin
End If
ligne = ligne + 1
Wend
End With
fin: Worksheets("Info").Activate
Range("B2").Select
J'ai une macro qui fonctionne bien mais seulement pour une commande. Je ne
sais pas comment voici ma commande. Si quelqu'un peut trouver m'aider ce
serait grandement apprécié
-- Dim id, ligne As Integer
Worksheets("Info").Cells(18, 20).Copy
id = Worksheets("Info").Cells(2, 19).Value
With Worksheets("Membres")
.Activate
ligne = 10
While .Cells(ligne, 1) <> ""
If .Cells(ligne, 1) = id Then
.Cells(ligne, 15).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks:úlse, Transpose:úlse
'2e commande
Worksheets("Info").Cells(3, 20).Copy
id = Worksheets("Info").Cells(3, 19).Value
With Worksheets("Membres")
.Activate
ligne = 10
While .Cells(ligne, 1) <> ""
If .Cells(ligne, 1) = id Then
.Cells(ligne, 16).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks:úlse, Transpose:úlse
GoTo fin
End If
ligne = ligne + 1
Wend
End With
fin: Worksheets("Info").Activate
Range("B2").Select
J'ai une macro qui fonctionne bien mais seulement pour une commande. Je ne
sais pas comment voici ma commande. Si quelqu'un peut trouver m'aider ce
serait grandement apprécié
-- Dim id, ligne As Integer
Worksheets("Info").Cells(18, 20).Copy
id = Worksheets("Info").Cells(2, 19).Value
With Worksheets("Membres")
.Activate
ligne = 10
While .Cells(ligne, 1) <> ""
If .Cells(ligne, 1) = id Then
.Cells(ligne, 15).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks:úlse, Transpose:úlse
'2e commande
Worksheets("Info").Cells(3, 20).Copy
id = Worksheets("Info").Cells(3, 19).Value
With Worksheets("Membres")
.Activate
ligne = 10
While .Cells(ligne, 1) <> ""
If .Cells(ligne, 1) = id Then
.Cells(ligne, 16).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks:úlse, Transpose:úlse
GoTo fin
End If
ligne = ligne + 1
Wend
End With
fin: Worksheets("Info").Activate
Range("B2").Select
Bonjour.
A mon avis, le problème vient de tes données. Peux-tu mettre ton
classeur sur www.cjoint.com en effaçant les données confidentielles et
poster ici l'adresse générée ?
Cordialement.
Daniel
> J'ai une macro qui fonctionne bien mais seulement pour une commande. Je ne
> sais pas comment voici ma commande. Si quelqu'un peut trouver m'aider ce
> serait grandement apprécié
>
> -- Dim id, ligne As Integer
>
> Worksheets("Info").Cells(18, 20).Copy
> id = Worksheets("Info").Cells(2, 19).Value
> With Worksheets("Membres")
> .Activate
> ligne = 10
> While .Cells(ligne, 1) <> ""
> If .Cells(ligne, 1) = id Then
> .Cells(ligne, 15).Select
> Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
> SkipBlanks:úlse, Transpose:úlse
> '2e commande
>
> Worksheets("Info").Cells(3, 20).Copy
> id = Worksheets("Info").Cells(3, 19).Value
> With Worksheets("Membres")
> .Activate
> ligne = 10
> While .Cells(ligne, 1) <> ""
> If .Cells(ligne, 1) = id Then
> .Cells(ligne, 16).Select
> Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
> SkipBlanks:úlse, Transpose:úlse
> GoTo fin
> End If
> ligne = ligne + 1
> Wend
> End With
>
> fin: Worksheets("Info").Activate
> Range("B2").Select
Bonjour.
A mon avis, le problème vient de tes données. Peux-tu mettre ton
classeur sur www.cjoint.com en effaçant les données confidentielles et
poster ici l'adresse générée ?
Cordialement.
Daniel
> J'ai une macro qui fonctionne bien mais seulement pour une commande. Je ne
> sais pas comment voici ma commande. Si quelqu'un peut trouver m'aider ce
> serait grandement apprécié
>
> -- Dim id, ligne As Integer
>
> Worksheets("Info").Cells(18, 20).Copy
> id = Worksheets("Info").Cells(2, 19).Value
> With Worksheets("Membres")
> .Activate
> ligne = 10
> While .Cells(ligne, 1) <> ""
> If .Cells(ligne, 1) = id Then
> .Cells(ligne, 15).Select
> Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
> SkipBlanks:úlse, Transpose:úlse
> '2e commande
>
> Worksheets("Info").Cells(3, 20).Copy
> id = Worksheets("Info").Cells(3, 19).Value
> With Worksheets("Membres")
> .Activate
> ligne = 10
> While .Cells(ligne, 1) <> ""
> If .Cells(ligne, 1) = id Then
> .Cells(ligne, 16).Select
> Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
> SkipBlanks:úlse, Transpose:úlse
> GoTo fin
> End If
> ligne = ligne + 1
> Wend
> End With
>
> fin: Worksheets("Info").Activate
> Range("B2").Select
Bonjour.
A mon avis, le problème vient de tes données. Peux-tu mettre ton
classeur sur www.cjoint.com en effaçant les données confidentielles et
poster ici l'adresse générée ?
Cordialement.
Daniel
> J'ai une macro qui fonctionne bien mais seulement pour une commande. Je ne
> sais pas comment voici ma commande. Si quelqu'un peut trouver m'aider ce
> serait grandement apprécié
>
> -- Dim id, ligne As Integer
>
> Worksheets("Info").Cells(18, 20).Copy
> id = Worksheets("Info").Cells(2, 19).Value
> With Worksheets("Membres")
> .Activate
> ligne = 10
> While .Cells(ligne, 1) <> ""
> If .Cells(ligne, 1) = id Then
> .Cells(ligne, 15).Select
> Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
> SkipBlanks:úlse, Transpose:úlse
> '2e commande
>
> Worksheets("Info").Cells(3, 20).Copy
> id = Worksheets("Info").Cells(3, 19).Value
> With Worksheets("Membres")
> .Activate
> ligne = 10
> While .Cells(ligne, 1) <> ""
> If .Cells(ligne, 1) = id Then
> .Cells(ligne, 16).Select
> Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
> SkipBlanks:úlse, Transpose:úlse
> GoTo fin
> End If
> ligne = ligne + 1
> Wend
> End With
>
> fin: Worksheets("Info").Activate
> Range("B2").Select
Bonjour Daniel
En effet j'ai corrigé ma macro mais je ne sais pas comment la corriger cette
macro pour qu'elle soit encore plus efficace.
J'aimerais ajouter une variante à cette macro
Dans le classeur "Info" (S4) est indiqué le No. de la formation (de 1 à 5)
Donc la macro ci-joint est celle de la formation #2
Pour les autres formations ce qui change sont où coller les informations
Formation #3
c.Offset(0, 15) = val2
c.Offset(0, 16) = val3
c.Offset(0, 17) = val4
Formation #4
c.Offset(0, 18) = val2
c.Offset(0, 19) = val3
c.Offset(0, 20) = val4
Formation #5
c.Offset(0, 21) = val2
c.Offset(0, 22) = val3
c.Offset(0, 23) = val4
Voici la macro corrigé
Dim c As Range, val1, val2, val3, val4
With Worksheets("Info")
val1 = .Cells(4, 14).Value
val2 = .Cells(18, 20) 'présence
val3 = .Cells(3, 19) 'méthode de paiement
val4 = .Cells(21, 11) 'coût
End With
With Worksheets("Membres")
For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
If c = val1 Then
c.Offset(0, 12) = val2
c.Offset(0, 13) = val3
c.Offset(0, 14) = val4
End If
Next c
End With
Worksheets("Info").Activate
Range("B2").Select
End Sub
--
Nitrof
"Daniel.C" a écrit :Bonjour.
A mon avis, le problème vient de tes données. Peux-tu mettre ton
classeur sur www.cjoint.com en effaçant les données confidentielles et
poster ici l'adresse générée ?
Cordialement.
DanielJ'ai une macro qui fonctionne bien mais seulement pour une commande. Je ne
sais pas comment voici ma commande. Si quelqu'un peut trouver m'aider ce
serait grandement apprécié
-- Dim id, ligne As Integer
Worksheets("Info").Cells(18, 20).Copy
id = Worksheets("Info").Cells(2, 19).Value
With Worksheets("Membres")
.Activate
ligne = 10
While .Cells(ligne, 1) <> ""
If .Cells(ligne, 1) = id Then
.Cells(ligne, 15).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks:úlse, Transpose:úlse
'2e commande
Worksheets("Info").Cells(3, 20).Copy
id = Worksheets("Info").Cells(3, 19).Value
With Worksheets("Membres")
.Activate
ligne = 10
While .Cells(ligne, 1) <> ""
If .Cells(ligne, 1) = id Then
.Cells(ligne, 16).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks:úlse, Transpose:úlse
GoTo fin
End If
ligne = ligne + 1
Wend
End With
fin: Worksheets("Info").Activate
Range("B2").Select
Bonjour Daniel
En effet j'ai corrigé ma macro mais je ne sais pas comment la corriger cette
macro pour qu'elle soit encore plus efficace.
J'aimerais ajouter une variante à cette macro
Dans le classeur "Info" (S4) est indiqué le No. de la formation (de 1 à 5)
Donc la macro ci-joint est celle de la formation #2
Pour les autres formations ce qui change sont où coller les informations
Formation #3
c.Offset(0, 15) = val2
c.Offset(0, 16) = val3
c.Offset(0, 17) = val4
Formation #4
c.Offset(0, 18) = val2
c.Offset(0, 19) = val3
c.Offset(0, 20) = val4
Formation #5
c.Offset(0, 21) = val2
c.Offset(0, 22) = val3
c.Offset(0, 23) = val4
Voici la macro corrigé
Dim c As Range, val1, val2, val3, val4
With Worksheets("Info")
val1 = .Cells(4, 14).Value
val2 = .Cells(18, 20) 'présence
val3 = .Cells(3, 19) 'méthode de paiement
val4 = .Cells(21, 11) 'coût
End With
With Worksheets("Membres")
For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
If c = val1 Then
c.Offset(0, 12) = val2
c.Offset(0, 13) = val3
c.Offset(0, 14) = val4
End If
Next c
End With
Worksheets("Info").Activate
Range("B2").Select
End Sub
--
Nitrof
"Daniel.C" a écrit :
Bonjour.
A mon avis, le problème vient de tes données. Peux-tu mettre ton
classeur sur www.cjoint.com en effaçant les données confidentielles et
poster ici l'adresse générée ?
Cordialement.
Daniel
J'ai une macro qui fonctionne bien mais seulement pour une commande. Je ne
sais pas comment voici ma commande. Si quelqu'un peut trouver m'aider ce
serait grandement apprécié
-- Dim id, ligne As Integer
Worksheets("Info").Cells(18, 20).Copy
id = Worksheets("Info").Cells(2, 19).Value
With Worksheets("Membres")
.Activate
ligne = 10
While .Cells(ligne, 1) <> ""
If .Cells(ligne, 1) = id Then
.Cells(ligne, 15).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks:úlse, Transpose:úlse
'2e commande
Worksheets("Info").Cells(3, 20).Copy
id = Worksheets("Info").Cells(3, 19).Value
With Worksheets("Membres")
.Activate
ligne = 10
While .Cells(ligne, 1) <> ""
If .Cells(ligne, 1) = id Then
.Cells(ligne, 16).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks:úlse, Transpose:úlse
GoTo fin
End If
ligne = ligne + 1
Wend
End With
fin: Worksheets("Info").Activate
Range("B2").Select
Bonjour Daniel
En effet j'ai corrigé ma macro mais je ne sais pas comment la corriger cette
macro pour qu'elle soit encore plus efficace.
J'aimerais ajouter une variante à cette macro
Dans le classeur "Info" (S4) est indiqué le No. de la formation (de 1 à 5)
Donc la macro ci-joint est celle de la formation #2
Pour les autres formations ce qui change sont où coller les informations
Formation #3
c.Offset(0, 15) = val2
c.Offset(0, 16) = val3
c.Offset(0, 17) = val4
Formation #4
c.Offset(0, 18) = val2
c.Offset(0, 19) = val3
c.Offset(0, 20) = val4
Formation #5
c.Offset(0, 21) = val2
c.Offset(0, 22) = val3
c.Offset(0, 23) = val4
Voici la macro corrigé
Dim c As Range, val1, val2, val3, val4
With Worksheets("Info")
val1 = .Cells(4, 14).Value
val2 = .Cells(18, 20) 'présence
val3 = .Cells(3, 19) 'méthode de paiement
val4 = .Cells(21, 11) 'coût
End With
With Worksheets("Membres")
For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
If c = val1 Then
c.Offset(0, 12) = val2
c.Offset(0, 13) = val3
c.Offset(0, 14) = val4
End If
Next c
End With
Worksheets("Info").Activate
Range("B2").Select
End Sub
--
Nitrof
"Daniel.C" a écrit :Bonjour.
A mon avis, le problème vient de tes données. Peux-tu mettre ton
classeur sur www.cjoint.com en effaçant les données confidentielles et
poster ici l'adresse générée ?
Cordialement.
DanielJ'ai une macro qui fonctionne bien mais seulement pour une commande. Je ne
sais pas comment voici ma commande. Si quelqu'un peut trouver m'aider ce
serait grandement apprécié
-- Dim id, ligne As Integer
Worksheets("Info").Cells(18, 20).Copy
id = Worksheets("Info").Cells(2, 19).Value
With Worksheets("Membres")
.Activate
ligne = 10
While .Cells(ligne, 1) <> ""
If .Cells(ligne, 1) = id Then
.Cells(ligne, 15).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks:úlse, Transpose:úlse
'2e commande
Worksheets("Info").Cells(3, 20).Copy
id = Worksheets("Info").Cells(3, 19).Value
With Worksheets("Membres")
.Activate
ligne = 10
While .Cells(ligne, 1) <> ""
If .Cells(ligne, 1) = id Then
.Cells(ligne, 16).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks:úlse, Transpose:úlse
GoTo fin
End If
ligne = ligne + 1
Wend
End With
fin: Worksheets("Info").Activate
Range("B2").Select
Bonjour.
Si j'ai bien compris :
With Worksheets("Membres")
For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
c.Offset(0, 6 * val1 * 3) = val2
c.Offset(0, 7 * val1 * 3) = val3
c.Offset(0, 8 * val1 * 3) = val4
Next c
End With
DanielBonjour Daniel
En effet j'ai corrigé ma macro mais je ne sais pas comment la corriger
cette macro pour qu'elle soit encore plus efficace.
J'aimerais ajouter une variante à cette macro
Dans le classeur "Info" (S4) est indiqué le No. de la formation (de 1 à 5)
Donc la macro ci-joint est celle de la formation #2
Pour les autres formations ce qui change sont où coller les informations
Formation #3 c.Offset(0, 15) = val2
c.Offset(0, 16) = val3
c.Offset(0, 17) = val4
Formation #4 c.Offset(0, 18) = val2
c.Offset(0, 19) = val3
c.Offset(0, 20) = val4
Formation #5
c.Offset(0, 21) = val2
c.Offset(0, 22) = val3
c.Offset(0, 23) = val4
Voici la macro corrigé
Dim c As Range, val1, val2, val3, val4
With Worksheets("Info")
val1 = .Cells(4, 14).Value
val2 = .Cells(18, 20) 'présence
val3 = .Cells(3, 19) 'méthode de paiement
val4 = .Cells(21, 11) 'coût
End With
With Worksheets("Membres")
For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
If c = val1 Then
c.Offset(0, 12) = val2
c.Offset(0, 13) = val3
c.Offset(0, 14) = val4
End If
Next c
End With
Worksheets("Info").Activate
Range("B2").Select
End Sub
-- Nitrof
"Daniel.C" a écrit :Bonjour.
A mon avis, le problème vient de tes données. Peux-tu mettre ton classeur
sur www.cjoint.com en effaçant les données confidentielles et poster ici
l'adresse générée ?
Cordialement.
DanielJ'ai une macro qui fonctionne bien mais seulement pour une commande. Je
ne sais pas comment voici ma commande. Si quelqu'un peut trouver m'aider
ce serait grandement apprécié
-- Dim id, ligne As Integer
Worksheets("Info").Cells(18, 20).Copy
id = Worksheets("Info").Cells(2, 19).Value
With Worksheets("Membres")
.Activate
ligne = 10
While .Cells(ligne, 1) <> ""
If .Cells(ligne, 1) = id Then
.Cells(ligne, 15).Select
Selection.PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
'2e commande
Worksheets("Info").Cells(3, 20).Copy
id = Worksheets("Info").Cells(3, 19).Value
With Worksheets("Membres")
.Activate
ligne = 10
While .Cells(ligne, 1) <> ""
If .Cells(ligne, 1) = id Then
.Cells(ligne, 16).Select
Selection.PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
GoTo fin
End If
ligne = ligne + 1
Wend
End With
fin: Worksheets("Info").Activate
Range("B2").Select
Bonjour.
Si j'ai bien compris :
With Worksheets("Membres")
For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
c.Offset(0, 6 * val1 * 3) = val2
c.Offset(0, 7 * val1 * 3) = val3
c.Offset(0, 8 * val1 * 3) = val4
Next c
End With
Daniel
Bonjour Daniel
En effet j'ai corrigé ma macro mais je ne sais pas comment la corriger
cette macro pour qu'elle soit encore plus efficace.
J'aimerais ajouter une variante à cette macro
Dans le classeur "Info" (S4) est indiqué le No. de la formation (de 1 à 5)
Donc la macro ci-joint est celle de la formation #2
Pour les autres formations ce qui change sont où coller les informations
Formation #3 c.Offset(0, 15) = val2
c.Offset(0, 16) = val3
c.Offset(0, 17) = val4
Formation #4 c.Offset(0, 18) = val2
c.Offset(0, 19) = val3
c.Offset(0, 20) = val4
Formation #5
c.Offset(0, 21) = val2
c.Offset(0, 22) = val3
c.Offset(0, 23) = val4
Voici la macro corrigé
Dim c As Range, val1, val2, val3, val4
With Worksheets("Info")
val1 = .Cells(4, 14).Value
val2 = .Cells(18, 20) 'présence
val3 = .Cells(3, 19) 'méthode de paiement
val4 = .Cells(21, 11) 'coût
End With
With Worksheets("Membres")
For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
If c = val1 Then
c.Offset(0, 12) = val2
c.Offset(0, 13) = val3
c.Offset(0, 14) = val4
End If
Next c
End With
Worksheets("Info").Activate
Range("B2").Select
End Sub
-- Nitrof
"Daniel.C" a écrit :
Bonjour.
A mon avis, le problème vient de tes données. Peux-tu mettre ton classeur
sur www.cjoint.com en effaçant les données confidentielles et poster ici
l'adresse générée ?
Cordialement.
Daniel
J'ai une macro qui fonctionne bien mais seulement pour une commande. Je
ne sais pas comment voici ma commande. Si quelqu'un peut trouver m'aider
ce serait grandement apprécié
-- Dim id, ligne As Integer
Worksheets("Info").Cells(18, 20).Copy
id = Worksheets("Info").Cells(2, 19).Value
With Worksheets("Membres")
.Activate
ligne = 10
While .Cells(ligne, 1) <> ""
If .Cells(ligne, 1) = id Then
.Cells(ligne, 15).Select
Selection.PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
'2e commande
Worksheets("Info").Cells(3, 20).Copy
id = Worksheets("Info").Cells(3, 19).Value
With Worksheets("Membres")
.Activate
ligne = 10
While .Cells(ligne, 1) <> ""
If .Cells(ligne, 1) = id Then
.Cells(ligne, 16).Select
Selection.PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
GoTo fin
End If
ligne = ligne + 1
Wend
End With
fin: Worksheets("Info").Activate
Range("B2").Select
Bonjour.
Si j'ai bien compris :
With Worksheets("Membres")
For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
c.Offset(0, 6 * val1 * 3) = val2
c.Offset(0, 7 * val1 * 3) = val3
c.Offset(0, 8 * val1 * 3) = val4
Next c
End With
DanielBonjour Daniel
En effet j'ai corrigé ma macro mais je ne sais pas comment la corriger
cette macro pour qu'elle soit encore plus efficace.
J'aimerais ajouter une variante à cette macro
Dans le classeur "Info" (S4) est indiqué le No. de la formation (de 1 à 5)
Donc la macro ci-joint est celle de la formation #2
Pour les autres formations ce qui change sont où coller les informations
Formation #3 c.Offset(0, 15) = val2
c.Offset(0, 16) = val3
c.Offset(0, 17) = val4
Formation #4 c.Offset(0, 18) = val2
c.Offset(0, 19) = val3
c.Offset(0, 20) = val4
Formation #5
c.Offset(0, 21) = val2
c.Offset(0, 22) = val3
c.Offset(0, 23) = val4
Voici la macro corrigé
Dim c As Range, val1, val2, val3, val4
With Worksheets("Info")
val1 = .Cells(4, 14).Value
val2 = .Cells(18, 20) 'présence
val3 = .Cells(3, 19) 'méthode de paiement
val4 = .Cells(21, 11) 'coût
End With
With Worksheets("Membres")
For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
If c = val1 Then
c.Offset(0, 12) = val2
c.Offset(0, 13) = val3
c.Offset(0, 14) = val4
End If
Next c
End With
Worksheets("Info").Activate
Range("B2").Select
End Sub
-- Nitrof
"Daniel.C" a écrit :Bonjour.
A mon avis, le problème vient de tes données. Peux-tu mettre ton classeur
sur www.cjoint.com en effaçant les données confidentielles et poster ici
l'adresse générée ?
Cordialement.
DanielJ'ai une macro qui fonctionne bien mais seulement pour une commande. Je
ne sais pas comment voici ma commande. Si quelqu'un peut trouver m'aider
ce serait grandement apprécié
-- Dim id, ligne As Integer
Worksheets("Info").Cells(18, 20).Copy
id = Worksheets("Info").Cells(2, 19).Value
With Worksheets("Membres")
.Activate
ligne = 10
While .Cells(ligne, 1) <> ""
If .Cells(ligne, 1) = id Then
.Cells(ligne, 15).Select
Selection.PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
'2e commande
Worksheets("Info").Cells(3, 20).Copy
id = Worksheets("Info").Cells(3, 19).Value
With Worksheets("Membres")
.Activate
ligne = 10
While .Cells(ligne, 1) <> ""
If .Cells(ligne, 1) = id Then
.Cells(ligne, 16).Select
Selection.PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
GoTo fin
End If
ligne = ligne + 1
Wend
End With
fin: Worksheets("Info").Activate
Range("B2").Select
Plutôt :
With Worksheets("Membres")
For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
c.Offset(0, 6 + val1 * 3) = val2
c.Offset(0, 7 + val1 * 3) = val3
c.Offset(0, 8 + val1 * 3) = val4
Next c
End With
Daniel
> Bonjour.
> Si j'ai bien compris :
>
> With Worksheets("Membres")
> For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
> c.Offset(0, 6 * val1 * 3) = val2
> c.Offset(0, 7 * val1 * 3) = val3
> c.Offset(0, 8 * val1 * 3) = val4
>
> Next c
> End With
>
> Daniel
>
>> Bonjour Daniel
>>
>> En effet j'ai corrigé ma macro mais je ne sais pas comment la corriger
>> cette macro pour qu'elle soit encore plus efficace.
>>
>> J'aimerais ajouter une variante à cette macro
>> Dans le classeur "Info" (S4) est indiqué le No. de la formation (de 1 à 5)
>> Donc la macro ci-joint est celle de la formation #2
>> Pour les autres formations ce qui change sont où coller les informations
>> Formation #3 c.Offset(0, 15) = val2
>> c.Offset(0, 16) = val3
>> c.Offset(0, 17) = val4
>> Formation #4 c.Offset(0, 18) = val2
>> c.Offset(0, 19) = val3
>> c.Offset(0, 20) = val4
>> Formation #5
>> c.Offset(0, 21) = val2
>> c.Offset(0, 22) = val3
>> c.Offset(0, 23) = val4
>>
>> Voici la macro corrigé
>>
>> Dim c As Range, val1, val2, val3, val4
>>
>> With Worksheets("Info")
>> val1 = .Cells(4, 14).Value
>> val2 = .Cells(18, 20) 'présence
>> val3 = .Cells(3, 19) 'méthode de paiement
>> val4 = .Cells(21, 11) 'coût
>>
>> End With
>>
>> With Worksheets("Membres")
>> For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
>> If c = val1 Then
>> c.Offset(0, 12) = val2
>> c.Offset(0, 13) = val3
>> c.Offset(0, 14) = val4
>>
>> End If
>> Next c
>> End With
>>
>> Worksheets("Info").Activate
>> Range("B2").Select
>>
>> End Sub
>>
>>
>>
>>
>> -- Nitrof
>>
>>
>> "Daniel.C" a écrit :
>>
>>> Bonjour.
>>> A mon avis, le problème vient de tes données. Peux-tu mettre ton classeur
>>> sur www.cjoint.com en effaçant les données confidentielles et poster ici
>>> l'adresse générée ?
>>> Cordialement.
>>> Daniel
>>>
>>>> J'ai une macro qui fonctionne bien mais seulement pour une commande. Je
>>>> ne sais pas comment voici ma commande. Si quelqu'un peut trouver m'aider
>>>> ce serait grandement apprécié
>>>>
>>>> -- Dim id, ligne As Integer
>>>> Worksheets("Info").Cells(18, 20).Copy
>>>> id = Worksheets("Info").Cells(2, 19).Value
>>>> With Worksheets("Membres")
>>>> .Activate
>>>> ligne = 10
>>>> While .Cells(ligne, 1) <> ""
>>>> If .Cells(ligne, 1) = id Then
>>>> .Cells(ligne, 15).Select
>>>> Selection.PasteSpecial Paste:=xlPasteValues,
>>>> Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
>>>> '2e commande
>>>> Worksheets("Info").Cells(3, 20).Copy
>>>> id = Worksheets("Info").Cells(3, 19).Value
>>>> With Worksheets("Membres")
>>>> .Activate
>>>> ligne = 10
>>>> While .Cells(ligne, 1) <> ""
>>>> If .Cells(ligne, 1) = id Then
>>>> .Cells(ligne, 16).Select
>>>> Selection.PasteSpecial Paste:=xlPasteValues,
>>>> Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
>>>> GoTo fin
>>>> End If
>>>> ligne = ligne + 1
>>>> Wend
>>>> End With
>>>> fin: Worksheets("Info").Activate
>>>> Range("B2").Select
>>>
>>>
Plutôt :
With Worksheets("Membres")
For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
c.Offset(0, 6 + val1 * 3) = val2
c.Offset(0, 7 + val1 * 3) = val3
c.Offset(0, 8 + val1 * 3) = val4
Next c
End With
Daniel
> Bonjour.
> Si j'ai bien compris :
>
> With Worksheets("Membres")
> For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
> c.Offset(0, 6 * val1 * 3) = val2
> c.Offset(0, 7 * val1 * 3) = val3
> c.Offset(0, 8 * val1 * 3) = val4
>
> Next c
> End With
>
> Daniel
>
>> Bonjour Daniel
>>
>> En effet j'ai corrigé ma macro mais je ne sais pas comment la corriger
>> cette macro pour qu'elle soit encore plus efficace.
>>
>> J'aimerais ajouter une variante à cette macro
>> Dans le classeur "Info" (S4) est indiqué le No. de la formation (de 1 à 5)
>> Donc la macro ci-joint est celle de la formation #2
>> Pour les autres formations ce qui change sont où coller les informations
>> Formation #3 c.Offset(0, 15) = val2
>> c.Offset(0, 16) = val3
>> c.Offset(0, 17) = val4
>> Formation #4 c.Offset(0, 18) = val2
>> c.Offset(0, 19) = val3
>> c.Offset(0, 20) = val4
>> Formation #5
>> c.Offset(0, 21) = val2
>> c.Offset(0, 22) = val3
>> c.Offset(0, 23) = val4
>>
>> Voici la macro corrigé
>>
>> Dim c As Range, val1, val2, val3, val4
>>
>> With Worksheets("Info")
>> val1 = .Cells(4, 14).Value
>> val2 = .Cells(18, 20) 'présence
>> val3 = .Cells(3, 19) 'méthode de paiement
>> val4 = .Cells(21, 11) 'coût
>>
>> End With
>>
>> With Worksheets("Membres")
>> For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
>> If c = val1 Then
>> c.Offset(0, 12) = val2
>> c.Offset(0, 13) = val3
>> c.Offset(0, 14) = val4
>>
>> End If
>> Next c
>> End With
>>
>> Worksheets("Info").Activate
>> Range("B2").Select
>>
>> End Sub
>>
>>
>>
>>
>> -- Nitrof
>>
>>
>> "Daniel.C" a écrit :
>>
>>> Bonjour.
>>> A mon avis, le problème vient de tes données. Peux-tu mettre ton classeur
>>> sur www.cjoint.com en effaçant les données confidentielles et poster ici
>>> l'adresse générée ?
>>> Cordialement.
>>> Daniel
>>>
>>>> J'ai une macro qui fonctionne bien mais seulement pour une commande. Je
>>>> ne sais pas comment voici ma commande. Si quelqu'un peut trouver m'aider
>>>> ce serait grandement apprécié
>>>>
>>>> -- Dim id, ligne As Integer
>>>> Worksheets("Info").Cells(18, 20).Copy
>>>> id = Worksheets("Info").Cells(2, 19).Value
>>>> With Worksheets("Membres")
>>>> .Activate
>>>> ligne = 10
>>>> While .Cells(ligne, 1) <> ""
>>>> If .Cells(ligne, 1) = id Then
>>>> .Cells(ligne, 15).Select
>>>> Selection.PasteSpecial Paste:=xlPasteValues,
>>>> Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
>>>> '2e commande
>>>> Worksheets("Info").Cells(3, 20).Copy
>>>> id = Worksheets("Info").Cells(3, 19).Value
>>>> With Worksheets("Membres")
>>>> .Activate
>>>> ligne = 10
>>>> While .Cells(ligne, 1) <> ""
>>>> If .Cells(ligne, 1) = id Then
>>>> .Cells(ligne, 16).Select
>>>> Selection.PasteSpecial Paste:=xlPasteValues,
>>>> Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
>>>> GoTo fin
>>>> End If
>>>> ligne = ligne + 1
>>>> Wend
>>>> End With
>>>> fin: Worksheets("Info").Activate
>>>> Range("B2").Select
>>>
>>>
Plutôt :
With Worksheets("Membres")
For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
c.Offset(0, 6 + val1 * 3) = val2
c.Offset(0, 7 + val1 * 3) = val3
c.Offset(0, 8 + val1 * 3) = val4
Next c
End With
Daniel
> Bonjour.
> Si j'ai bien compris :
>
> With Worksheets("Membres")
> For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
> c.Offset(0, 6 * val1 * 3) = val2
> c.Offset(0, 7 * val1 * 3) = val3
> c.Offset(0, 8 * val1 * 3) = val4
>
> Next c
> End With
>
> Daniel
>
>> Bonjour Daniel
>>
>> En effet j'ai corrigé ma macro mais je ne sais pas comment la corriger
>> cette macro pour qu'elle soit encore plus efficace.
>>
>> J'aimerais ajouter une variante à cette macro
>> Dans le classeur "Info" (S4) est indiqué le No. de la formation (de 1 à 5)
>> Donc la macro ci-joint est celle de la formation #2
>> Pour les autres formations ce qui change sont où coller les informations
>> Formation #3 c.Offset(0, 15) = val2
>> c.Offset(0, 16) = val3
>> c.Offset(0, 17) = val4
>> Formation #4 c.Offset(0, 18) = val2
>> c.Offset(0, 19) = val3
>> c.Offset(0, 20) = val4
>> Formation #5
>> c.Offset(0, 21) = val2
>> c.Offset(0, 22) = val3
>> c.Offset(0, 23) = val4
>>
>> Voici la macro corrigé
>>
>> Dim c As Range, val1, val2, val3, val4
>>
>> With Worksheets("Info")
>> val1 = .Cells(4, 14).Value
>> val2 = .Cells(18, 20) 'présence
>> val3 = .Cells(3, 19) 'méthode de paiement
>> val4 = .Cells(21, 11) 'coût
>>
>> End With
>>
>> With Worksheets("Membres")
>> For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
>> If c = val1 Then
>> c.Offset(0, 12) = val2
>> c.Offset(0, 13) = val3
>> c.Offset(0, 14) = val4
>>
>> End If
>> Next c
>> End With
>>
>> Worksheets("Info").Activate
>> Range("B2").Select
>>
>> End Sub
>>
>>
>>
>>
>> -- Nitrof
>>
>>
>> "Daniel.C" a écrit :
>>
>>> Bonjour.
>>> A mon avis, le problème vient de tes données. Peux-tu mettre ton classeur
>>> sur www.cjoint.com en effaçant les données confidentielles et poster ici
>>> l'adresse générée ?
>>> Cordialement.
>>> Daniel
>>>
>>>> J'ai une macro qui fonctionne bien mais seulement pour une commande. Je
>>>> ne sais pas comment voici ma commande. Si quelqu'un peut trouver m'aider
>>>> ce serait grandement apprécié
>>>>
>>>> -- Dim id, ligne As Integer
>>>> Worksheets("Info").Cells(18, 20).Copy
>>>> id = Worksheets("Info").Cells(2, 19).Value
>>>> With Worksheets("Membres")
>>>> .Activate
>>>> ligne = 10
>>>> While .Cells(ligne, 1) <> ""
>>>> If .Cells(ligne, 1) = id Then
>>>> .Cells(ligne, 15).Select
>>>> Selection.PasteSpecial Paste:=xlPasteValues,
>>>> Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
>>>> '2e commande
>>>> Worksheets("Info").Cells(3, 20).Copy
>>>> id = Worksheets("Info").Cells(3, 19).Value
>>>> With Worksheets("Membres")
>>>> .Activate
>>>> ligne = 10
>>>> While .Cells(ligne, 1) <> ""
>>>> If .Cells(ligne, 1) = id Then
>>>> .Cells(ligne, 16).Select
>>>> Selection.PasteSpecial Paste:=xlPasteValues,
>>>> Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
>>>> GoTo fin
>>>> End If
>>>> ligne = ligne + 1
>>>> Wend
>>>> End With
>>>> fin: Worksheets("Info").Activate
>>>> Range("B2").Select
>>>
>>>
Merci de ton aide mais ça fonctionne pas.
Comme j'ai expliqué au préalable, ma macro fonctionne correctement,
cependant je dois avoir plusieur bouton pour lancer la formule.
Je donne 5 formations/an (avril, mai, juin, sept & nov) que j''identifie de
1 à 5 (information situé dans ma feuille "Info en (4,19))
Donc avec le même bouton, j'aimerais pouvoir lance la macro selon la date et
coller les infos dans les cellules suivantes
Formation 2
c.Offset(0, 12) = val2
c.Offset(0, 13) = val3
c.Offset(0, 14) = val4
Formation 3
c.Offset(0, 15) = val2
c.Offset(0, 16) = val3
c.Offset(0, 17) = val4
etc...
Les valeurs où je receuille les informations ne changent pas à savoir:
val1 = .Cells(4, 14).Value
val2 = .Cells(18, 20) 'présence
val3 = .Cells(3, 19) 'méthode de paiement
val4 = .Cells(21, 11) 'coût
J'espère que ces informations vous serons utiles
--
Richard
"Daniel.C" a écrit :Plutôt :
With Worksheets("Membres")
For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
c.Offset(0, 6 + val1 * 3) = val2
c.Offset(0, 7 + val1 * 3) = val3
c.Offset(0, 8 + val1 * 3) = val4
Next c
End With
DanielBonjour.
Si j'ai bien compris :
With Worksheets("Membres")
For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
c.Offset(0, 6 * val1 * 3) = val2
c.Offset(0, 7 * val1 * 3) = val3
c.Offset(0, 8 * val1 * 3) = val4
Next c
End With
DanielBonjour Daniel
En effet j'ai corrigé ma macro mais je ne sais pas comment la corriger
cette macro pour qu'elle soit encore plus efficace.
J'aimerais ajouter une variante à cette macro
Dans le classeur "Info" (S4) est indiqué le No. de la formation (de 1 à 5)
Donc la macro ci-joint est celle de la formation #2
Pour les autres formations ce qui change sont où coller les informations
Formation #3 c.Offset(0, 15) = val2
c.Offset(0, 16) = val3
c.Offset(0, 17) = val4
Formation #4 c.Offset(0, 18) = val2
c.Offset(0, 19) = val3
c.Offset(0, 20) = val4
Formation #5
c.Offset(0, 21) = val2
c.Offset(0, 22) = val3
c.Offset(0, 23) = val4
Voici la macro corrigé
Dim c As Range, val1, val2, val3, val4
With Worksheets("Info")
val1 = .Cells(4, 14).Value
val2 = .Cells(18, 20) 'présence
val3 = .Cells(3, 19) 'méthode de paiement
val4 = .Cells(21, 11) 'coût
End With
With Worksheets("Membres")
For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
If c = val1 Then
c.Offset(0, 12) = val2
c.Offset(0, 13) = val3
c.Offset(0, 14) = val4
End If
Next c
End With
Worksheets("Info").Activate
Range("B2").Select
End Sub
-- Nitrof
"Daniel.C" a écrit :Bonjour.
A mon avis, le problème vient de tes données. Peux-tu mettre ton classeur
sur www.cjoint.com en effaçant les données confidentielles et poster ici
l'adresse générée ?
Cordialement.
DanielJ'ai une macro qui fonctionne bien mais seulement pour une commande. Je
ne sais pas comment voici ma commande. Si quelqu'un peut trouver m'aider
ce serait grandement apprécié
-- Dim id, ligne As Integer
Worksheets("Info").Cells(18, 20).Copy
id = Worksheets("Info").Cells(2, 19).Value
With Worksheets("Membres")
.Activate
ligne = 10
While .Cells(ligne, 1) <> ""
If .Cells(ligne, 1) = id Then
.Cells(ligne, 15).Select
Selection.PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
'2e commande
Worksheets("Info").Cells(3, 20).Copy
id = Worksheets("Info").Cells(3, 19).Value
With Worksheets("Membres")
.Activate
ligne = 10
While .Cells(ligne, 1) <> ""
If .Cells(ligne, 1) = id Then
.Cells(ligne, 16).Select
Selection.PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
GoTo fin
End If
ligne = ligne + 1
Wend
End With
fin: Worksheets("Info").Activate
Range("B2").Select
Merci de ton aide mais ça fonctionne pas.
Comme j'ai expliqué au préalable, ma macro fonctionne correctement,
cependant je dois avoir plusieur bouton pour lancer la formule.
Je donne 5 formations/an (avril, mai, juin, sept & nov) que j''identifie de
1 à 5 (information situé dans ma feuille "Info en (4,19))
Donc avec le même bouton, j'aimerais pouvoir lance la macro selon la date et
coller les infos dans les cellules suivantes
Formation 2
c.Offset(0, 12) = val2
c.Offset(0, 13) = val3
c.Offset(0, 14) = val4
Formation 3
c.Offset(0, 15) = val2
c.Offset(0, 16) = val3
c.Offset(0, 17) = val4
etc...
Les valeurs où je receuille les informations ne changent pas à savoir:
val1 = .Cells(4, 14).Value
val2 = .Cells(18, 20) 'présence
val3 = .Cells(3, 19) 'méthode de paiement
val4 = .Cells(21, 11) 'coût
J'espère que ces informations vous serons utiles
--
Richard
"Daniel.C" a écrit :
Plutôt :
With Worksheets("Membres")
For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
c.Offset(0, 6 + val1 * 3) = val2
c.Offset(0, 7 + val1 * 3) = val3
c.Offset(0, 8 + val1 * 3) = val4
Next c
End With
Daniel
Bonjour.
Si j'ai bien compris :
With Worksheets("Membres")
For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
c.Offset(0, 6 * val1 * 3) = val2
c.Offset(0, 7 * val1 * 3) = val3
c.Offset(0, 8 * val1 * 3) = val4
Next c
End With
Daniel
Bonjour Daniel
En effet j'ai corrigé ma macro mais je ne sais pas comment la corriger
cette macro pour qu'elle soit encore plus efficace.
J'aimerais ajouter une variante à cette macro
Dans le classeur "Info" (S4) est indiqué le No. de la formation (de 1 à 5)
Donc la macro ci-joint est celle de la formation #2
Pour les autres formations ce qui change sont où coller les informations
Formation #3 c.Offset(0, 15) = val2
c.Offset(0, 16) = val3
c.Offset(0, 17) = val4
Formation #4 c.Offset(0, 18) = val2
c.Offset(0, 19) = val3
c.Offset(0, 20) = val4
Formation #5
c.Offset(0, 21) = val2
c.Offset(0, 22) = val3
c.Offset(0, 23) = val4
Voici la macro corrigé
Dim c As Range, val1, val2, val3, val4
With Worksheets("Info")
val1 = .Cells(4, 14).Value
val2 = .Cells(18, 20) 'présence
val3 = .Cells(3, 19) 'méthode de paiement
val4 = .Cells(21, 11) 'coût
End With
With Worksheets("Membres")
For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
If c = val1 Then
c.Offset(0, 12) = val2
c.Offset(0, 13) = val3
c.Offset(0, 14) = val4
End If
Next c
End With
Worksheets("Info").Activate
Range("B2").Select
End Sub
-- Nitrof
"Daniel.C" a écrit :
Bonjour.
A mon avis, le problème vient de tes données. Peux-tu mettre ton classeur
sur www.cjoint.com en effaçant les données confidentielles et poster ici
l'adresse générée ?
Cordialement.
Daniel
J'ai une macro qui fonctionne bien mais seulement pour une commande. Je
ne sais pas comment voici ma commande. Si quelqu'un peut trouver m'aider
ce serait grandement apprécié
-- Dim id, ligne As Integer
Worksheets("Info").Cells(18, 20).Copy
id = Worksheets("Info").Cells(2, 19).Value
With Worksheets("Membres")
.Activate
ligne = 10
While .Cells(ligne, 1) <> ""
If .Cells(ligne, 1) = id Then
.Cells(ligne, 15).Select
Selection.PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
'2e commande
Worksheets("Info").Cells(3, 20).Copy
id = Worksheets("Info").Cells(3, 19).Value
With Worksheets("Membres")
.Activate
ligne = 10
While .Cells(ligne, 1) <> ""
If .Cells(ligne, 1) = id Then
.Cells(ligne, 16).Select
Selection.PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
GoTo fin
End If
ligne = ligne + 1
Wend
End With
fin: Worksheets("Info").Activate
Range("B2").Select
Merci de ton aide mais ça fonctionne pas.
Comme j'ai expliqué au préalable, ma macro fonctionne correctement,
cependant je dois avoir plusieur bouton pour lancer la formule.
Je donne 5 formations/an (avril, mai, juin, sept & nov) que j''identifie de
1 à 5 (information situé dans ma feuille "Info en (4,19))
Donc avec le même bouton, j'aimerais pouvoir lance la macro selon la date et
coller les infos dans les cellules suivantes
Formation 2
c.Offset(0, 12) = val2
c.Offset(0, 13) = val3
c.Offset(0, 14) = val4
Formation 3
c.Offset(0, 15) = val2
c.Offset(0, 16) = val3
c.Offset(0, 17) = val4
etc...
Les valeurs où je receuille les informations ne changent pas à savoir:
val1 = .Cells(4, 14).Value
val2 = .Cells(18, 20) 'présence
val3 = .Cells(3, 19) 'méthode de paiement
val4 = .Cells(21, 11) 'coût
J'espère que ces informations vous serons utiles
--
Richard
"Daniel.C" a écrit :Plutôt :
With Worksheets("Membres")
For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
c.Offset(0, 6 + val1 * 3) = val2
c.Offset(0, 7 + val1 * 3) = val3
c.Offset(0, 8 + val1 * 3) = val4
Next c
End With
DanielBonjour.
Si j'ai bien compris :
With Worksheets("Membres")
For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
c.Offset(0, 6 * val1 * 3) = val2
c.Offset(0, 7 * val1 * 3) = val3
c.Offset(0, 8 * val1 * 3) = val4
Next c
End With
DanielBonjour Daniel
En effet j'ai corrigé ma macro mais je ne sais pas comment la corriger
cette macro pour qu'elle soit encore plus efficace.
J'aimerais ajouter une variante à cette macro
Dans le classeur "Info" (S4) est indiqué le No. de la formation (de 1 à 5)
Donc la macro ci-joint est celle de la formation #2
Pour les autres formations ce qui change sont où coller les informations
Formation #3 c.Offset(0, 15) = val2
c.Offset(0, 16) = val3
c.Offset(0, 17) = val4
Formation #4 c.Offset(0, 18) = val2
c.Offset(0, 19) = val3
c.Offset(0, 20) = val4
Formation #5
c.Offset(0, 21) = val2
c.Offset(0, 22) = val3
c.Offset(0, 23) = val4
Voici la macro corrigé
Dim c As Range, val1, val2, val3, val4
With Worksheets("Info")
val1 = .Cells(4, 14).Value
val2 = .Cells(18, 20) 'présence
val3 = .Cells(3, 19) 'méthode de paiement
val4 = .Cells(21, 11) 'coût
End With
With Worksheets("Membres")
For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
If c = val1 Then
c.Offset(0, 12) = val2
c.Offset(0, 13) = val3
c.Offset(0, 14) = val4
End If
Next c
End With
Worksheets("Info").Activate
Range("B2").Select
End Sub
-- Nitrof
"Daniel.C" a écrit :Bonjour.
A mon avis, le problème vient de tes données. Peux-tu mettre ton classeur
sur www.cjoint.com en effaçant les données confidentielles et poster ici
l'adresse générée ?
Cordialement.
DanielJ'ai une macro qui fonctionne bien mais seulement pour une commande. Je
ne sais pas comment voici ma commande. Si quelqu'un peut trouver m'aider
ce serait grandement apprécié
-- Dim id, ligne As Integer
Worksheets("Info").Cells(18, 20).Copy
id = Worksheets("Info").Cells(2, 19).Value
With Worksheets("Membres")
.Activate
ligne = 10
While .Cells(ligne, 1) <> ""
If .Cells(ligne, 1) = id Then
.Cells(ligne, 15).Select
Selection.PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
'2e commande
Worksheets("Info").Cells(3, 20).Copy
id = Worksheets("Info").Cells(3, 19).Value
With Worksheets("Membres")
.Activate
ligne = 10
While .Cells(ligne, 1) <> ""
If .Cells(ligne, 1) = id Then
.Cells(ligne, 16).Select
Selection.PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
GoTo fin
End If
ligne = ligne + 1
Wend
End With
fin: Worksheets("Info").Activate
Range("B2").Select
Ce que je comprends :
Pour la formation 1 :
c.Offset(0, 9) = val2
Pour la formation 2 :
c.Offset(0, 12) = val2
Pour la formation 3 :
c.Offset(0, 15) = val2
Soit un décalage de 3 colonnes.
Val1 contenant le numéro de la formation, de 1 à 5
j'ai écrit :
c.Offset(0, 6 + val1 * 3) = val2
et de même pour val3 et val4.
Ce qui me semble convenir à toutes les formations ?
Daniel
> Merci de ton aide mais ça fonctionne pas.
>
> Comme j'ai expliqué au préalable, ma macro fonctionne correctement,
> cependant je dois avoir plusieur bouton pour lancer la formule.
> Je donne 5 formations/an (avril, mai, juin, sept & nov) que j''identifie de
> 1 à 5 (information situé dans ma feuille "Info en (4,19))
> Donc avec le même bouton, j'aimerais pouvoir lance la macro selon la date et
> coller les infos dans les cellules suivantes
> Formation 2
> c.Offset(0, 12) = val2
> c.Offset(0, 13) = val3
> c.Offset(0, 14) = val4
> Formation 3
> c.Offset(0, 15) = val2
> c.Offset(0, 16) = val3
> c.Offset(0, 17) = val4
> etc...
> Les valeurs où je receuille les informations ne changent pas à savoir:
> val1 = .Cells(4, 14).Value
> val2 = .Cells(18, 20) 'présence
> val3 = .Cells(3, 19) 'méthode de paiement
> val4 = .Cells(21, 11) 'coût
>
> J'espère que ces informations vous serons utiles
>
> --
> Richard
>
>
> "Daniel.C" a écrit :
>
>> Plutôt :
>> With Worksheets("Membres")
>> For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
>> c.Offset(0, 6 + val1 * 3) = val2
>> c.Offset(0, 7 + val1 * 3) = val3
>> c.Offset(0, 8 + val1 * 3) = val4
>>
>> Next c
>> End With
>>
>> Daniel
>>
>>> Bonjour.
>>> Si j'ai bien compris :
>>>
>>> With Worksheets("Membres")
>>> For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
>>> c.Offset(0, 6 * val1 * 3) = val2
>>> c.Offset(0, 7 * val1 * 3) = val3
>>> c.Offset(0, 8 * val1 * 3) = val4
>>>
>>> Next c
>>> End With
>>>
>>> Daniel
>>>
>>>> Bonjour Daniel
>>>>
>>>> En effet j'ai corrigé ma macro mais je ne sais pas comment la corriger
>>>> cette macro pour qu'elle soit encore plus efficace.
>>>>
>>>> J'aimerais ajouter une variante à cette macro
>>>> Dans le classeur "Info" (S4) est indiqué le No. de la formation (de 1 à 5)
>>>> Donc la macro ci-joint est celle de la formation #2
>>>> Pour les autres formations ce qui change sont où coller les informations
>>>> Formation #3 c.Offset(0, 15) = val2
>>>> c.Offset(0, 16) = val3
>>>> c.Offset(0, 17) = val4
>>>> Formation #4 c.Offset(0, 18) = val2
>>>> c.Offset(0, 19) = val3
>>>> c.Offset(0, 20) = val4
>>>> Formation #5
>>>> c.Offset(0, 21) = val2
>>>> c.Offset(0, 22) = val3
>>>> c.Offset(0, 23) = val4
>>>>
>>>> Voici la macro corrigé
>>>>
>>>> Dim c As Range, val1, val2, val3, val4
>>>>
>>>> With Worksheets("Info")
>>>> val1 = .Cells(4, 14).Value
>>>> val2 = .Cells(18, 20) 'présence
>>>> val3 = .Cells(3, 19) 'méthode de paiement
>>>> val4 = .Cells(21, 11) 'coût
>>>>
>>>> End With
>>>>
>>>> With Worksheets("Membres")
>>>> For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
>>>> If c = val1 Then
>>>> c.Offset(0, 12) = val2
>>>> c.Offset(0, 13) = val3
>>>> c.Offset(0, 14) = val4
>>>>
>>>> End If
>>>> Next c
>>>> End With
>>>>
>>>> Worksheets("Info").Activate
>>>> Range("B2").Select
>>>>
>>>> End Sub
>>>>
>>>>
>>>>
>>>>
>>>> -- Nitrof
>>>>
>>>>
>>>> "Daniel.C" a écrit :
>>>>
>>>>> Bonjour.
>>>>> A mon avis, le problème vient de tes données. Peux-tu mettre ton classeur
>>>>> sur www.cjoint.com en effaçant les données confidentielles et poster ici
>>>>> l'adresse générée ?
>>>>> Cordialement.
>>>>> Daniel
>>>>>
>>>>>> J'ai une macro qui fonctionne bien mais seulement pour une commande. Je
>>>>>> ne sais pas comment voici ma commande. Si quelqu'un peut trouver m'aider
>>>>>> ce serait grandement apprécié
>>>>>>
>>>>>> -- Dim id, ligne As Integer
>>>>>> Worksheets("Info").Cells(18, 20).Copy
>>>>>> id = Worksheets("Info").Cells(2, 19).Value
>>>>>> With Worksheets("Membres")
>>>>>> .Activate
>>>>>> ligne = 10
>>>>>> While .Cells(ligne, 1) <> ""
>>>>>> If .Cells(ligne, 1) = id Then
>>>>>> .Cells(ligne, 15).Select
>>>>>> Selection.PasteSpecial Paste:=xlPasteValues,
>>>>>> Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
>>>>>> '2e commande
>>>>>> Worksheets("Info").Cells(3, 20).Copy
>>>>>> id = Worksheets("Info").Cells(3, 19).Value
>>>>>> With Worksheets("Membres")
>>>>>> .Activate
>>>>>> ligne = 10
>>>>>> While .Cells(ligne, 1) <> ""
>>>>>> If .Cells(ligne, 1) = id Then
>>>>>> .Cells(ligne, 16).Select
>>>>>> Selection.PasteSpecial Paste:=xlPasteValues,
>>>>>> Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
>>>>>> GoTo fin
>>>>>> End If
>>>>>> ligne = ligne + 1
>>>>>> Wend
>>>>>> End With
>>>>>> fin: Worksheets("Info").Activate
>>>>>> Range("B2").Select
>>>>>
>>>>>
>>
>>
>>
Ce que je comprends :
Pour la formation 1 :
c.Offset(0, 9) = val2
Pour la formation 2 :
c.Offset(0, 12) = val2
Pour la formation 3 :
c.Offset(0, 15) = val2
Soit un décalage de 3 colonnes.
Val1 contenant le numéro de la formation, de 1 à 5
j'ai écrit :
c.Offset(0, 6 + val1 * 3) = val2
et de même pour val3 et val4.
Ce qui me semble convenir à toutes les formations ?
Daniel
> Merci de ton aide mais ça fonctionne pas.
>
> Comme j'ai expliqué au préalable, ma macro fonctionne correctement,
> cependant je dois avoir plusieur bouton pour lancer la formule.
> Je donne 5 formations/an (avril, mai, juin, sept & nov) que j''identifie de
> 1 à 5 (information situé dans ma feuille "Info en (4,19))
> Donc avec le même bouton, j'aimerais pouvoir lance la macro selon la date et
> coller les infos dans les cellules suivantes
> Formation 2
> c.Offset(0, 12) = val2
> c.Offset(0, 13) = val3
> c.Offset(0, 14) = val4
> Formation 3
> c.Offset(0, 15) = val2
> c.Offset(0, 16) = val3
> c.Offset(0, 17) = val4
> etc...
> Les valeurs où je receuille les informations ne changent pas à savoir:
> val1 = .Cells(4, 14).Value
> val2 = .Cells(18, 20) 'présence
> val3 = .Cells(3, 19) 'méthode de paiement
> val4 = .Cells(21, 11) 'coût
>
> J'espère que ces informations vous serons utiles
>
> --
> Richard
>
>
> "Daniel.C" a écrit :
>
>> Plutôt :
>> With Worksheets("Membres")
>> For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
>> c.Offset(0, 6 + val1 * 3) = val2
>> c.Offset(0, 7 + val1 * 3) = val3
>> c.Offset(0, 8 + val1 * 3) = val4
>>
>> Next c
>> End With
>>
>> Daniel
>>
>>> Bonjour.
>>> Si j'ai bien compris :
>>>
>>> With Worksheets("Membres")
>>> For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
>>> c.Offset(0, 6 * val1 * 3) = val2
>>> c.Offset(0, 7 * val1 * 3) = val3
>>> c.Offset(0, 8 * val1 * 3) = val4
>>>
>>> Next c
>>> End With
>>>
>>> Daniel
>>>
>>>> Bonjour Daniel
>>>>
>>>> En effet j'ai corrigé ma macro mais je ne sais pas comment la corriger
>>>> cette macro pour qu'elle soit encore plus efficace.
>>>>
>>>> J'aimerais ajouter une variante à cette macro
>>>> Dans le classeur "Info" (S4) est indiqué le No. de la formation (de 1 à 5)
>>>> Donc la macro ci-joint est celle de la formation #2
>>>> Pour les autres formations ce qui change sont où coller les informations
>>>> Formation #3 c.Offset(0, 15) = val2
>>>> c.Offset(0, 16) = val3
>>>> c.Offset(0, 17) = val4
>>>> Formation #4 c.Offset(0, 18) = val2
>>>> c.Offset(0, 19) = val3
>>>> c.Offset(0, 20) = val4
>>>> Formation #5
>>>> c.Offset(0, 21) = val2
>>>> c.Offset(0, 22) = val3
>>>> c.Offset(0, 23) = val4
>>>>
>>>> Voici la macro corrigé
>>>>
>>>> Dim c As Range, val1, val2, val3, val4
>>>>
>>>> With Worksheets("Info")
>>>> val1 = .Cells(4, 14).Value
>>>> val2 = .Cells(18, 20) 'présence
>>>> val3 = .Cells(3, 19) 'méthode de paiement
>>>> val4 = .Cells(21, 11) 'coût
>>>>
>>>> End With
>>>>
>>>> With Worksheets("Membres")
>>>> For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
>>>> If c = val1 Then
>>>> c.Offset(0, 12) = val2
>>>> c.Offset(0, 13) = val3
>>>> c.Offset(0, 14) = val4
>>>>
>>>> End If
>>>> Next c
>>>> End With
>>>>
>>>> Worksheets("Info").Activate
>>>> Range("B2").Select
>>>>
>>>> End Sub
>>>>
>>>>
>>>>
>>>>
>>>> -- Nitrof
>>>>
>>>>
>>>> "Daniel.C" a écrit :
>>>>
>>>>> Bonjour.
>>>>> A mon avis, le problème vient de tes données. Peux-tu mettre ton classeur
>>>>> sur www.cjoint.com en effaçant les données confidentielles et poster ici
>>>>> l'adresse générée ?
>>>>> Cordialement.
>>>>> Daniel
>>>>>
>>>>>> J'ai une macro qui fonctionne bien mais seulement pour une commande. Je
>>>>>> ne sais pas comment voici ma commande. Si quelqu'un peut trouver m'aider
>>>>>> ce serait grandement apprécié
>>>>>>
>>>>>> -- Dim id, ligne As Integer
>>>>>> Worksheets("Info").Cells(18, 20).Copy
>>>>>> id = Worksheets("Info").Cells(2, 19).Value
>>>>>> With Worksheets("Membres")
>>>>>> .Activate
>>>>>> ligne = 10
>>>>>> While .Cells(ligne, 1) <> ""
>>>>>> If .Cells(ligne, 1) = id Then
>>>>>> .Cells(ligne, 15).Select
>>>>>> Selection.PasteSpecial Paste:=xlPasteValues,
>>>>>> Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
>>>>>> '2e commande
>>>>>> Worksheets("Info").Cells(3, 20).Copy
>>>>>> id = Worksheets("Info").Cells(3, 19).Value
>>>>>> With Worksheets("Membres")
>>>>>> .Activate
>>>>>> ligne = 10
>>>>>> While .Cells(ligne, 1) <> ""
>>>>>> If .Cells(ligne, 1) = id Then
>>>>>> .Cells(ligne, 16).Select
>>>>>> Selection.PasteSpecial Paste:=xlPasteValues,
>>>>>> Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
>>>>>> GoTo fin
>>>>>> End If
>>>>>> ligne = ligne + 1
>>>>>> Wend
>>>>>> End With
>>>>>> fin: Worksheets("Info").Activate
>>>>>> Range("B2").Select
>>>>>
>>>>>
>>
>>
>>
Ce que je comprends :
Pour la formation 1 :
c.Offset(0, 9) = val2
Pour la formation 2 :
c.Offset(0, 12) = val2
Pour la formation 3 :
c.Offset(0, 15) = val2
Soit un décalage de 3 colonnes.
Val1 contenant le numéro de la formation, de 1 à 5
j'ai écrit :
c.Offset(0, 6 + val1 * 3) = val2
et de même pour val3 et val4.
Ce qui me semble convenir à toutes les formations ?
Daniel
> Merci de ton aide mais ça fonctionne pas.
>
> Comme j'ai expliqué au préalable, ma macro fonctionne correctement,
> cependant je dois avoir plusieur bouton pour lancer la formule.
> Je donne 5 formations/an (avril, mai, juin, sept & nov) que j''identifie de
> 1 à 5 (information situé dans ma feuille "Info en (4,19))
> Donc avec le même bouton, j'aimerais pouvoir lance la macro selon la date et
> coller les infos dans les cellules suivantes
> Formation 2
> c.Offset(0, 12) = val2
> c.Offset(0, 13) = val3
> c.Offset(0, 14) = val4
> Formation 3
> c.Offset(0, 15) = val2
> c.Offset(0, 16) = val3
> c.Offset(0, 17) = val4
> etc...
> Les valeurs où je receuille les informations ne changent pas à savoir:
> val1 = .Cells(4, 14).Value
> val2 = .Cells(18, 20) 'présence
> val3 = .Cells(3, 19) 'méthode de paiement
> val4 = .Cells(21, 11) 'coût
>
> J'espère que ces informations vous serons utiles
>
> --
> Richard
>
>
> "Daniel.C" a écrit :
>
>> Plutôt :
>> With Worksheets("Membres")
>> For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
>> c.Offset(0, 6 + val1 * 3) = val2
>> c.Offset(0, 7 + val1 * 3) = val3
>> c.Offset(0, 8 + val1 * 3) = val4
>>
>> Next c
>> End With
>>
>> Daniel
>>
>>> Bonjour.
>>> Si j'ai bien compris :
>>>
>>> With Worksheets("Membres")
>>> For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
>>> c.Offset(0, 6 * val1 * 3) = val2
>>> c.Offset(0, 7 * val1 * 3) = val3
>>> c.Offset(0, 8 * val1 * 3) = val4
>>>
>>> Next c
>>> End With
>>>
>>> Daniel
>>>
>>>> Bonjour Daniel
>>>>
>>>> En effet j'ai corrigé ma macro mais je ne sais pas comment la corriger
>>>> cette macro pour qu'elle soit encore plus efficace.
>>>>
>>>> J'aimerais ajouter une variante à cette macro
>>>> Dans le classeur "Info" (S4) est indiqué le No. de la formation (de 1 à 5)
>>>> Donc la macro ci-joint est celle de la formation #2
>>>> Pour les autres formations ce qui change sont où coller les informations
>>>> Formation #3 c.Offset(0, 15) = val2
>>>> c.Offset(0, 16) = val3
>>>> c.Offset(0, 17) = val4
>>>> Formation #4 c.Offset(0, 18) = val2
>>>> c.Offset(0, 19) = val3
>>>> c.Offset(0, 20) = val4
>>>> Formation #5
>>>> c.Offset(0, 21) = val2
>>>> c.Offset(0, 22) = val3
>>>> c.Offset(0, 23) = val4
>>>>
>>>> Voici la macro corrigé
>>>>
>>>> Dim c As Range, val1, val2, val3, val4
>>>>
>>>> With Worksheets("Info")
>>>> val1 = .Cells(4, 14).Value
>>>> val2 = .Cells(18, 20) 'présence
>>>> val3 = .Cells(3, 19) 'méthode de paiement
>>>> val4 = .Cells(21, 11) 'coût
>>>>
>>>> End With
>>>>
>>>> With Worksheets("Membres")
>>>> For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
>>>> If c = val1 Then
>>>> c.Offset(0, 12) = val2
>>>> c.Offset(0, 13) = val3
>>>> c.Offset(0, 14) = val4
>>>>
>>>> End If
>>>> Next c
>>>> End With
>>>>
>>>> Worksheets("Info").Activate
>>>> Range("B2").Select
>>>>
>>>> End Sub
>>>>
>>>>
>>>>
>>>>
>>>> -- Nitrof
>>>>
>>>>
>>>> "Daniel.C" a écrit :
>>>>
>>>>> Bonjour.
>>>>> A mon avis, le problème vient de tes données. Peux-tu mettre ton classeur
>>>>> sur www.cjoint.com en effaçant les données confidentielles et poster ici
>>>>> l'adresse générée ?
>>>>> Cordialement.
>>>>> Daniel
>>>>>
>>>>>> J'ai une macro qui fonctionne bien mais seulement pour une commande. Je
>>>>>> ne sais pas comment voici ma commande. Si quelqu'un peut trouver m'aider
>>>>>> ce serait grandement apprécié
>>>>>>
>>>>>> -- Dim id, ligne As Integer
>>>>>> Worksheets("Info").Cells(18, 20).Copy
>>>>>> id = Worksheets("Info").Cells(2, 19).Value
>>>>>> With Worksheets("Membres")
>>>>>> .Activate
>>>>>> ligne = 10
>>>>>> While .Cells(ligne, 1) <> ""
>>>>>> If .Cells(ligne, 1) = id Then
>>>>>> .Cells(ligne, 15).Select
>>>>>> Selection.PasteSpecial Paste:=xlPasteValues,
>>>>>> Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
>>>>>> '2e commande
>>>>>> Worksheets("Info").Cells(3, 20).Copy
>>>>>> id = Worksheets("Info").Cells(3, 19).Value
>>>>>> With Worksheets("Membres")
>>>>>> .Activate
>>>>>> ligne = 10
>>>>>> While .Cells(ligne, 1) <> ""
>>>>>> If .Cells(ligne, 1) = id Then
>>>>>> .Cells(ligne, 16).Select
>>>>>> Selection.PasteSpecial Paste:=xlPasteValues,
>>>>>> Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
>>>>>> GoTo fin
>>>>>> End If
>>>>>> ligne = ligne + 1
>>>>>> Wend
>>>>>> End With
>>>>>> fin: Worksheets("Info").Activate
>>>>>> Range("B2").Select
>>>>>
>>>>>
>>
>>
>>
Ce que je comprends :
Pour la formation 1 :
c.Offset(0, 9) = val2
Pour la formation 2 :
c.Offset(0, 12) = val2
Pour la formation 3 :
c.Offset(0, 15) = val2
Soit un décalage de 3 colonnes.
Val1 contenant le numéro de la formation, de 1 à 5
j'ai écrit :
c.Offset(0, 6 + val1 * 3) = val2
et de même pour val3 et val4.
Ce qui me semble convenir à toutes les formations ?
Daniel
> Merci de ton aide mais ça fonctionne pas.
>
> Comme j'ai expliqué au préalable, ma macro fonctionne correctement,
> cependant je dois avoir plusieur bouton pour lancer la formule.
> Je donne 5 formations/an (avril, mai, juin, sept & nov) que j''identifie de
> 1 à 5 (information situé dans ma feuille "Info en (4,19))
> Donc avec le même bouton, j'aimerais pouvoir lance la macro selon la date et
> coller les infos dans les cellules suivantes
> Formation 2
> c.Offset(0, 12) = val2
> c.Offset(0, 13) = val3
> c.Offset(0, 14) = val4
> Formation 3
> c.Offset(0, 15) = val2
> c.Offset(0, 16) = val3
> c.Offset(0, 17) = val4
> etc...
> Les valeurs où je receuille les informations ne changent pas à savoir:
> val1 = .Cells(4, 14).Value
> val2 = .Cells(18, 20) 'présence
> val3 = .Cells(3, 19) 'méthode de paiement
> val4 = .Cells(21, 11) 'coût
>
> J'espère que ces informations vous serons utiles
>
> --
> Richard
>
>
> "Daniel.C" a écrit :
>
>> Plutôt :
>> With Worksheets("Membres")
>> For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
>> c.Offset(0, 6 + val1 * 3) = val2
>> c.Offset(0, 7 + val1 * 3) = val3
>> c.Offset(0, 8 + val1 * 3) = val4
>>
>> Next c
>> End With
>>
>> Daniel
>>
>>> Bonjour.
>>> Si j'ai bien compris :
>>>
>>> With Worksheets("Membres")
>>> For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
>>> c.Offset(0, 6 * val1 * 3) = val2
>>> c.Offset(0, 7 * val1 * 3) = val3
>>> c.Offset(0, 8 * val1 * 3) = val4
>>>
>>> Next c
>>> End With
>>>
>>> Daniel
>>>
>>>> Bonjour Daniel
>>>>
>>>> En effet j'ai corrigé ma macro mais je ne sais pas comment la corriger
>>>> cette macro pour qu'elle soit encore plus efficace.
>>>>
>>>> J'aimerais ajouter une variante à cette macro
>>>> Dans le classeur "Info" (S4) est indiqué le No. de la formation (de 1 à 5)
>>>> Donc la macro ci-joint est celle de la formation #2
>>>> Pour les autres formations ce qui change sont où coller les informations
>>>> Formation #3 c.Offset(0, 15) = val2
>>>> c.Offset(0, 16) = val3
>>>> c.Offset(0, 17) = val4
>>>> Formation #4 c.Offset(0, 18) = val2
>>>> c.Offset(0, 19) = val3
>>>> c.Offset(0, 20) = val4
>>>> Formation #5
>>>> c.Offset(0, 21) = val2
>>>> c.Offset(0, 22) = val3
>>>> c.Offset(0, 23) = val4
>>>>
>>>> Voici la macro corrigé
>>>>
>>>> Dim c As Range, val1, val2, val3, val4
>>>>
>>>> With Worksheets("Info")
>>>> val1 = .Cells(4, 14).Value
>>>> val2 = .Cells(18, 20) 'présence
>>>> val3 = .Cells(3, 19) 'méthode de paiement
>>>> val4 = .Cells(21, 11) 'coût
>>>>
>>>> End With
>>>>
>>>> With Worksheets("Membres")
>>>> For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
>>>> If c = val1 Then
>>>> c.Offset(0, 12) = val2
>>>> c.Offset(0, 13) = val3
>>>> c.Offset(0, 14) = val4
>>>>
>>>> End If
>>>> Next c
>>>> End With
>>>>
>>>> Worksheets("Info").Activate
>>>> Range("B2").Select
>>>>
>>>> End Sub
>>>>
>>>>
>>>>
>>>>
>>>> -- Nitrof
>>>>
>>>>
>>>> "Daniel.C" a écrit :
>>>>
>>>>> Bonjour.
>>>>> A mon avis, le problème vient de tes données. Peux-tu mettre ton classeur
>>>>> sur www.cjoint.com en effaçant les données confidentielles et poster ici
>>>>> l'adresse générée ?
>>>>> Cordialement.
>>>>> Daniel
>>>>>
>>>>>> J'ai une macro qui fonctionne bien mais seulement pour une commande. Je
>>>>>> ne sais pas comment voici ma commande. Si quelqu'un peut trouver m'aider
>>>>>> ce serait grandement apprécié
>>>>>>
>>>>>> -- Dim id, ligne As Integer
>>>>>> Worksheets("Info").Cells(18, 20).Copy
>>>>>> id = Worksheets("Info").Cells(2, 19).Value
>>>>>> With Worksheets("Membres")
>>>>>> .Activate
>>>>>> ligne = 10
>>>>>> While .Cells(ligne, 1) <> ""
>>>>>> If .Cells(ligne, 1) = id Then
>>>>>> .Cells(ligne, 15).Select
>>>>>> Selection.PasteSpecial Paste:=xlPasteValues,
>>>>>> Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
>>>>>> '2e commande
>>>>>> Worksheets("Info").Cells(3, 20).Copy
>>>>>> id = Worksheets("Info").Cells(3, 19).Value
>>>>>> With Worksheets("Membres")
>>>>>> .Activate
>>>>>> ligne = 10
>>>>>> While .Cells(ligne, 1) <> ""
>>>>>> If .Cells(ligne, 1) = id Then
>>>>>> .Cells(ligne, 16).Select
>>>>>> Selection.PasteSpecial Paste:=xlPasteValues,
>>>>>> Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
>>>>>> GoTo fin
>>>>>> End If
>>>>>> ligne = ligne + 1
>>>>>> Wend
>>>>>> End With
>>>>>> fin: Worksheets("Info").Activate
>>>>>> Range("B2").Select
>>>>>
>>>>>
>>
>>
>>
Ce que je comprends :
Pour la formation 1 :
c.Offset(0, 9) = val2
Pour la formation 2 :
c.Offset(0, 12) = val2
Pour la formation 3 :
c.Offset(0, 15) = val2
Soit un décalage de 3 colonnes.
Val1 contenant le numéro de la formation, de 1 à 5
j'ai écrit :
c.Offset(0, 6 + val1 * 3) = val2
et de même pour val3 et val4.
Ce qui me semble convenir à toutes les formations ?
Daniel
> Merci de ton aide mais ça fonctionne pas.
>
> Comme j'ai expliqué au préalable, ma macro fonctionne correctement,
> cependant je dois avoir plusieur bouton pour lancer la formule.
> Je donne 5 formations/an (avril, mai, juin, sept & nov) que j''identifie de
> 1 à 5 (information situé dans ma feuille "Info en (4,19))
> Donc avec le même bouton, j'aimerais pouvoir lance la macro selon la date et
> coller les infos dans les cellules suivantes
> Formation 2
> c.Offset(0, 12) = val2
> c.Offset(0, 13) = val3
> c.Offset(0, 14) = val4
> Formation 3
> c.Offset(0, 15) = val2
> c.Offset(0, 16) = val3
> c.Offset(0, 17) = val4
> etc...
> Les valeurs où je receuille les informations ne changent pas à savoir:
> val1 = .Cells(4, 14).Value
> val2 = .Cells(18, 20) 'présence
> val3 = .Cells(3, 19) 'méthode de paiement
> val4 = .Cells(21, 11) 'coût
>
> J'espère que ces informations vous serons utiles
>
> --
> Richard
>
>
> "Daniel.C" a écrit :
>
>> Plutôt :
>> With Worksheets("Membres")
>> For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
>> c.Offset(0, 6 + val1 * 3) = val2
>> c.Offset(0, 7 + val1 * 3) = val3
>> c.Offset(0, 8 + val1 * 3) = val4
>>
>> Next c
>> End With
>>
>> Daniel
>>
>>> Bonjour.
>>> Si j'ai bien compris :
>>>
>>> With Worksheets("Membres")
>>> For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
>>> c.Offset(0, 6 * val1 * 3) = val2
>>> c.Offset(0, 7 * val1 * 3) = val3
>>> c.Offset(0, 8 * val1 * 3) = val4
>>>
>>> Next c
>>> End With
>>>
>>> Daniel
>>>
>>>> Bonjour Daniel
>>>>
>>>> En effet j'ai corrigé ma macro mais je ne sais pas comment la corriger
>>>> cette macro pour qu'elle soit encore plus efficace.
>>>>
>>>> J'aimerais ajouter une variante à cette macro
>>>> Dans le classeur "Info" (S4) est indiqué le No. de la formation (de 1 à 5)
>>>> Donc la macro ci-joint est celle de la formation #2
>>>> Pour les autres formations ce qui change sont où coller les informations
>>>> Formation #3 c.Offset(0, 15) = val2
>>>> c.Offset(0, 16) = val3
>>>> c.Offset(0, 17) = val4
>>>> Formation #4 c.Offset(0, 18) = val2
>>>> c.Offset(0, 19) = val3
>>>> c.Offset(0, 20) = val4
>>>> Formation #5
>>>> c.Offset(0, 21) = val2
>>>> c.Offset(0, 22) = val3
>>>> c.Offset(0, 23) = val4
>>>>
>>>> Voici la macro corrigé
>>>>
>>>> Dim c As Range, val1, val2, val3, val4
>>>>
>>>> With Worksheets("Info")
>>>> val1 = .Cells(4, 14).Value
>>>> val2 = .Cells(18, 20) 'présence
>>>> val3 = .Cells(3, 19) 'méthode de paiement
>>>> val4 = .Cells(21, 11) 'coût
>>>>
>>>> End With
>>>>
>>>> With Worksheets("Membres")
>>>> For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
>>>> If c = val1 Then
>>>> c.Offset(0, 12) = val2
>>>> c.Offset(0, 13) = val3
>>>> c.Offset(0, 14) = val4
>>>>
>>>> End If
>>>> Next c
>>>> End With
>>>>
>>>> Worksheets("Info").Activate
>>>> Range("B2").Select
>>>>
>>>> End Sub
>>>>
>>>>
>>>>
>>>>
>>>> -- Nitrof
>>>>
>>>>
>>>> "Daniel.C" a écrit :
>>>>
>>>>> Bonjour.
>>>>> A mon avis, le problème vient de tes données. Peux-tu mettre ton classeur
>>>>> sur www.cjoint.com en effaçant les données confidentielles et poster ici
>>>>> l'adresse générée ?
>>>>> Cordialement.
>>>>> Daniel
>>>>>
>>>>>> J'ai une macro qui fonctionne bien mais seulement pour une commande. Je
>>>>>> ne sais pas comment voici ma commande. Si quelqu'un peut trouver m'aider
>>>>>> ce serait grandement apprécié
>>>>>>
>>>>>> -- Dim id, ligne As Integer
>>>>>> Worksheets("Info").Cells(18, 20).Copy
>>>>>> id = Worksheets("Info").Cells(2, 19).Value
>>>>>> With Worksheets("Membres")
>>>>>> .Activate
>>>>>> ligne = 10
>>>>>> While .Cells(ligne, 1) <> ""
>>>>>> If .Cells(ligne, 1) = id Then
>>>>>> .Cells(ligne, 15).Select
>>>>>> Selection.PasteSpecial Paste:=xlPasteValues,
>>>>>> Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
>>>>>> '2e commande
>>>>>> Worksheets("Info").Cells(3, 20).Copy
>>>>>> id = Worksheets("Info").Cells(3, 19).Value
>>>>>> With Worksheets("Membres")
>>>>>> .Activate
>>>>>> ligne = 10
>>>>>> While .Cells(ligne, 1) <> ""
>>>>>> If .Cells(ligne, 1) = id Then
>>>>>> .Cells(ligne, 16).Select
>>>>>> Selection.PasteSpecial Paste:=xlPasteValues,
>>>>>> Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
>>>>>> GoTo fin
>>>>>> End If
>>>>>> ligne = ligne + 1
>>>>>> Wend
>>>>>> End With
>>>>>> fin: Worksheets("Info").Activate
>>>>>> Range("B2").Select
>>>>>
>>>>>
>>
>>
>>
Ce que je comprends :
Pour la formation 1 :
c.Offset(0, 9) = val2
Pour la formation 2 :
c.Offset(0, 12) = val2
Pour la formation 3 :
c.Offset(0, 15) = val2
Soit un décalage de 3 colonnes.
Val1 contenant le numéro de la formation, de 1 à 5
j'ai écrit :
c.Offset(0, 6 + val1 * 3) = val2
et de même pour val3 et val4.
Ce qui me semble convenir à toutes les formations ?
Daniel
> Merci de ton aide mais ça fonctionne pas.
>
> Comme j'ai expliqué au préalable, ma macro fonctionne correctement,
> cependant je dois avoir plusieur bouton pour lancer la formule.
> Je donne 5 formations/an (avril, mai, juin, sept & nov) que j''identifie de
> 1 à 5 (information situé dans ma feuille "Info en (4,19))
> Donc avec le même bouton, j'aimerais pouvoir lance la macro selon la date et
> coller les infos dans les cellules suivantes
> Formation 2
> c.Offset(0, 12) = val2
> c.Offset(0, 13) = val3
> c.Offset(0, 14) = val4
> Formation 3
> c.Offset(0, 15) = val2
> c.Offset(0, 16) = val3
> c.Offset(0, 17) = val4
> etc...
> Les valeurs où je receuille les informations ne changent pas à savoir:
> val1 = .Cells(4, 14).Value
> val2 = .Cells(18, 20) 'présence
> val3 = .Cells(3, 19) 'méthode de paiement
> val4 = .Cells(21, 11) 'coût
>
> J'espère que ces informations vous serons utiles
>
> --
> Richard
>
>
> "Daniel.C" a écrit :
>
>> Plutôt :
>> With Worksheets("Membres")
>> For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
>> c.Offset(0, 6 + val1 * 3) = val2
>> c.Offset(0, 7 + val1 * 3) = val3
>> c.Offset(0, 8 + val1 * 3) = val4
>>
>> Next c
>> End With
>>
>> Daniel
>>
>>> Bonjour.
>>> Si j'ai bien compris :
>>>
>>> With Worksheets("Membres")
>>> For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
>>> c.Offset(0, 6 * val1 * 3) = val2
>>> c.Offset(0, 7 * val1 * 3) = val3
>>> c.Offset(0, 8 * val1 * 3) = val4
>>>
>>> Next c
>>> End With
>>>
>>> Daniel
>>>
>>>> Bonjour Daniel
>>>>
>>>> En effet j'ai corrigé ma macro mais je ne sais pas comment la corriger
>>>> cette macro pour qu'elle soit encore plus efficace.
>>>>
>>>> J'aimerais ajouter une variante à cette macro
>>>> Dans le classeur "Info" (S4) est indiqué le No. de la formation (de 1 à 5)
>>>> Donc la macro ci-joint est celle de la formation #2
>>>> Pour les autres formations ce qui change sont où coller les informations
>>>> Formation #3 c.Offset(0, 15) = val2
>>>> c.Offset(0, 16) = val3
>>>> c.Offset(0, 17) = val4
>>>> Formation #4 c.Offset(0, 18) = val2
>>>> c.Offset(0, 19) = val3
>>>> c.Offset(0, 20) = val4
>>>> Formation #5
>>>> c.Offset(0, 21) = val2
>>>> c.Offset(0, 22) = val3
>>>> c.Offset(0, 23) = val4
>>>>
>>>> Voici la macro corrigé
>>>>
>>>> Dim c As Range, val1, val2, val3, val4
>>>>
>>>> With Worksheets("Info")
>>>> val1 = .Cells(4, 14).Value
>>>> val2 = .Cells(18, 20) 'présence
>>>> val3 = .Cells(3, 19) 'méthode de paiement
>>>> val4 = .Cells(21, 11) 'coût
>>>>
>>>> End With
>>>>
>>>> With Worksheets("Membres")
>>>> For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
>>>> If c = val1 Then
>>>> c.Offset(0, 12) = val2
>>>> c.Offset(0, 13) = val3
>>>> c.Offset(0, 14) = val4
>>>>
>>>> End If
>>>> Next c
>>>> End With
>>>>
>>>> Worksheets("Info").Activate
>>>> Range("B2").Select
>>>>
>>>> End Sub
>>>>
>>>>
>>>>
>>>>
>>>> -- Nitrof
>>>>
>>>>
>>>> "Daniel.C" a écrit :
>>>>
>>>>> Bonjour.
>>>>> A mon avis, le problème vient de tes données. Peux-tu mettre ton classeur
>>>>> sur www.cjoint.com en effaçant les données confidentielles et poster ici
>>>>> l'adresse générée ?
>>>>> Cordialement.
>>>>> Daniel
>>>>>
>>>>>> J'ai une macro qui fonctionne bien mais seulement pour une commande. Je
>>>>>> ne sais pas comment voici ma commande. Si quelqu'un peut trouver m'aider
>>>>>> ce serait grandement apprécié
>>>>>>
>>>>>> -- Dim id, ligne As Integer
>>>>>> Worksheets("Info").Cells(18, 20).Copy
>>>>>> id = Worksheets("Info").Cells(2, 19).Value
>>>>>> With Worksheets("Membres")
>>>>>> .Activate
>>>>>> ligne = 10
>>>>>> While .Cells(ligne, 1) <> ""
>>>>>> If .Cells(ligne, 1) = id Then
>>>>>> .Cells(ligne, 15).Select
>>>>>> Selection.PasteSpecial Paste:=xlPasteValues,
>>>>>> Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
>>>>>> '2e commande
>>>>>> Worksheets("Info").Cells(3, 20).Copy
>>>>>> id = Worksheets("Info").Cells(3, 19).Value
>>>>>> With Worksheets("Membres")
>>>>>> .Activate
>>>>>> ligne = 10
>>>>>> While .Cells(ligne, 1) <> ""
>>>>>> If .Cells(ligne, 1) = id Then
>>>>>> .Cells(ligne, 16).Select
>>>>>> Selection.PasteSpecial Paste:=xlPasteValues,
>>>>>> Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
>>>>>> GoTo fin
>>>>>> End If
>>>>>> ligne = ligne + 1
>>>>>> Wend
>>>>>> End With
>>>>>> fin: Worksheets("Info").Activate
>>>>>> Range("B2").Select
>>>>>
>>>>>
>>
>>
>>
Question
Où prends-tu la valeur Info(4,19) qui est la référence du # de formation,
c'est ça que je ne parviens pas à comprendre
--
Nitrof
"Daniel.C" a écrit :Ce que je comprends :
Pour la formation 1 :
c.Offset(0, 9) = val2
Pour la formation 2 :
c.Offset(0, 12) = val2
Pour la formation 3 :
c.Offset(0, 15) = val2
Soit un décalage de 3 colonnes.
Val1 contenant le numéro de la formation, de 1 à 5
j'ai écrit :
c.Offset(0, 6 + val1 * 3) = val2
et de même pour val3 et val4.
Ce qui me semble convenir à toutes les formations ?
DanielMerci de ton aide mais ça fonctionne pas.
Comme j'ai expliqué au préalable, ma macro fonctionne correctement,
cependant je dois avoir plusieur bouton pour lancer la formule.
Je donne 5 formations/an (avril, mai, juin, sept & nov) que j''identifie de
1 à 5 (information situé dans ma feuille "Info en (4,19))
Donc avec le même bouton, j'aimerais pouvoir lance la macro selon la date
et coller les infos dans les cellules suivantes
Formation 2
c.Offset(0, 12) = val2
c.Offset(0, 13) = val3
c.Offset(0, 14) = val4
Formation 3
c.Offset(0, 15) = val2
c.Offset(0, 16) = val3
c.Offset(0, 17) = val4
etc...
Les valeurs où je receuille les informations ne changent pas à savoir:
val1 = .Cells(4, 14).Value
val2 = .Cells(18, 20) 'présence
val3 = .Cells(3, 19) 'méthode de paiement
val4 = .Cells(21, 11) 'coût
J'espère que ces informations vous serons utiles
--
Richard
"Daniel.C" a écrit :Plutôt :
With Worksheets("Membres")
For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
c.Offset(0, 6 + val1 * 3) = val2
c.Offset(0, 7 + val1 * 3) = val3
c.Offset(0, 8 + val1 * 3) = val4
Next c
End With
DanielBonjour.
Si j'ai bien compris :
With Worksheets("Membres")
For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
c.Offset(0, 6 * val1 * 3) = val2
c.Offset(0, 7 * val1 * 3) = val3
c.Offset(0, 8 * val1 * 3) = val4
Next c
End With
DanielBonjour Daniel
En effet j'ai corrigé ma macro mais je ne sais pas comment la corriger
cette macro pour qu'elle soit encore plus efficace.
J'aimerais ajouter une variante à cette macro
Dans le classeur "Info" (S4) est indiqué le No. de la formation (de 1 à
5) Donc la macro ci-joint est celle de la formation #2
Pour les autres formations ce qui change sont où coller les informations
Formation #3 c.Offset(0, 15) = val2
c.Offset(0, 16) = val3
c.Offset(0, 17) = val4
Formation #4 c.Offset(0, 18) = val2
c.Offset(0, 19) = val3
c.Offset(0, 20) = val4
Formation #5
c.Offset(0, 21) = val2
c.Offset(0, 22) = val3
c.Offset(0, 23) = val4
Voici la macro corrigé
Dim c As Range, val1, val2, val3, val4
With Worksheets("Info")
val1 = .Cells(4, 14).Value
val2 = .Cells(18, 20) 'présence
val3 = .Cells(3, 19) 'méthode de paiement
val4 = .Cells(21, 11) 'coût
End With
With Worksheets("Membres")
For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
If c = val1 Then
c.Offset(0, 12) = val2
c.Offset(0, 13) = val3
c.Offset(0, 14) = val4
End If
Next c
End With
Worksheets("Info").Activate
Range("B2").Select
End Sub
-- Nitrof
"Daniel.C" a écrit :Bonjour.
A mon avis, le problème vient de tes données. Peux-tu mettre ton
classeur sur www.cjoint.com en effaçant les données confidentielles et
poster ici l'adresse générée ?
Cordialement.
DanielJ'ai une macro qui fonctionne bien mais seulement pour une commande.
Je ne sais pas comment voici ma commande. Si quelqu'un peut trouver
m'aider ce serait grandement apprécié
-- Dim id, ligne As Integer
Worksheets("Info").Cells(18, 20).Copy
id = Worksheets("Info").Cells(2, 19).Value
With Worksheets("Membres")
.Activate
ligne = 10
While .Cells(ligne, 1) <> ""
If .Cells(ligne, 1) = id Then
.Cells(ligne, 15).Select
Selection.PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
'2e commande
Worksheets("Info").Cells(3, 20).Copy
id = Worksheets("Info").Cells(3, 19).Value
With Worksheets("Membres")
.Activate
ligne = 10
While .Cells(ligne, 1) <> ""
If .Cells(ligne, 1) = id Then
.Cells(ligne, 16).Select
Selection.PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
GoTo fin
End If
ligne = ligne + 1
Wend
End With
fin: Worksheets("Info").Activate
Range("B2").Select
Question
Où prends-tu la valeur Info(4,19) qui est la référence du # de formation,
c'est ça que je ne parviens pas à comprendre
--
Nitrof
"Daniel.C" a écrit :
Ce que je comprends :
Pour la formation 1 :
c.Offset(0, 9) = val2
Pour la formation 2 :
c.Offset(0, 12) = val2
Pour la formation 3 :
c.Offset(0, 15) = val2
Soit un décalage de 3 colonnes.
Val1 contenant le numéro de la formation, de 1 à 5
j'ai écrit :
c.Offset(0, 6 + val1 * 3) = val2
et de même pour val3 et val4.
Ce qui me semble convenir à toutes les formations ?
Daniel
Merci de ton aide mais ça fonctionne pas.
Comme j'ai expliqué au préalable, ma macro fonctionne correctement,
cependant je dois avoir plusieur bouton pour lancer la formule.
Je donne 5 formations/an (avril, mai, juin, sept & nov) que j''identifie de
1 à 5 (information situé dans ma feuille "Info en (4,19))
Donc avec le même bouton, j'aimerais pouvoir lance la macro selon la date
et coller les infos dans les cellules suivantes
Formation 2
c.Offset(0, 12) = val2
c.Offset(0, 13) = val3
c.Offset(0, 14) = val4
Formation 3
c.Offset(0, 15) = val2
c.Offset(0, 16) = val3
c.Offset(0, 17) = val4
etc...
Les valeurs où je receuille les informations ne changent pas à savoir:
val1 = .Cells(4, 14).Value
val2 = .Cells(18, 20) 'présence
val3 = .Cells(3, 19) 'méthode de paiement
val4 = .Cells(21, 11) 'coût
J'espère que ces informations vous serons utiles
--
Richard
"Daniel.C" a écrit :
Plutôt :
With Worksheets("Membres")
For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
c.Offset(0, 6 + val1 * 3) = val2
c.Offset(0, 7 + val1 * 3) = val3
c.Offset(0, 8 + val1 * 3) = val4
Next c
End With
Daniel
Bonjour.
Si j'ai bien compris :
With Worksheets("Membres")
For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
c.Offset(0, 6 * val1 * 3) = val2
c.Offset(0, 7 * val1 * 3) = val3
c.Offset(0, 8 * val1 * 3) = val4
Next c
End With
Daniel
Bonjour Daniel
En effet j'ai corrigé ma macro mais je ne sais pas comment la corriger
cette macro pour qu'elle soit encore plus efficace.
J'aimerais ajouter une variante à cette macro
Dans le classeur "Info" (S4) est indiqué le No. de la formation (de 1 à
5) Donc la macro ci-joint est celle de la formation #2
Pour les autres formations ce qui change sont où coller les informations
Formation #3 c.Offset(0, 15) = val2
c.Offset(0, 16) = val3
c.Offset(0, 17) = val4
Formation #4 c.Offset(0, 18) = val2
c.Offset(0, 19) = val3
c.Offset(0, 20) = val4
Formation #5
c.Offset(0, 21) = val2
c.Offset(0, 22) = val3
c.Offset(0, 23) = val4
Voici la macro corrigé
Dim c As Range, val1, val2, val3, val4
With Worksheets("Info")
val1 = .Cells(4, 14).Value
val2 = .Cells(18, 20) 'présence
val3 = .Cells(3, 19) 'méthode de paiement
val4 = .Cells(21, 11) 'coût
End With
With Worksheets("Membres")
For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
If c = val1 Then
c.Offset(0, 12) = val2
c.Offset(0, 13) = val3
c.Offset(0, 14) = val4
End If
Next c
End With
Worksheets("Info").Activate
Range("B2").Select
End Sub
-- Nitrof
"Daniel.C" a écrit :
Bonjour.
A mon avis, le problème vient de tes données. Peux-tu mettre ton
classeur sur www.cjoint.com en effaçant les données confidentielles et
poster ici l'adresse générée ?
Cordialement.
Daniel
J'ai une macro qui fonctionne bien mais seulement pour une commande.
Je ne sais pas comment voici ma commande. Si quelqu'un peut trouver
m'aider ce serait grandement apprécié
-- Dim id, ligne As Integer
Worksheets("Info").Cells(18, 20).Copy
id = Worksheets("Info").Cells(2, 19).Value
With Worksheets("Membres")
.Activate
ligne = 10
While .Cells(ligne, 1) <> ""
If .Cells(ligne, 1) = id Then
.Cells(ligne, 15).Select
Selection.PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
'2e commande
Worksheets("Info").Cells(3, 20).Copy
id = Worksheets("Info").Cells(3, 19).Value
With Worksheets("Membres")
.Activate
ligne = 10
While .Cells(ligne, 1) <> ""
If .Cells(ligne, 1) = id Then
.Cells(ligne, 16).Select
Selection.PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
GoTo fin
End If
ligne = ligne + 1
Wend
End With
fin: Worksheets("Info").Activate
Range("B2").Select
Question
Où prends-tu la valeur Info(4,19) qui est la référence du # de formation,
c'est ça que je ne parviens pas à comprendre
--
Nitrof
"Daniel.C" a écrit :Ce que je comprends :
Pour la formation 1 :
c.Offset(0, 9) = val2
Pour la formation 2 :
c.Offset(0, 12) = val2
Pour la formation 3 :
c.Offset(0, 15) = val2
Soit un décalage de 3 colonnes.
Val1 contenant le numéro de la formation, de 1 à 5
j'ai écrit :
c.Offset(0, 6 + val1 * 3) = val2
et de même pour val3 et val4.
Ce qui me semble convenir à toutes les formations ?
DanielMerci de ton aide mais ça fonctionne pas.
Comme j'ai expliqué au préalable, ma macro fonctionne correctement,
cependant je dois avoir plusieur bouton pour lancer la formule.
Je donne 5 formations/an (avril, mai, juin, sept & nov) que j''identifie de
1 à 5 (information situé dans ma feuille "Info en (4,19))
Donc avec le même bouton, j'aimerais pouvoir lance la macro selon la date
et coller les infos dans les cellules suivantes
Formation 2
c.Offset(0, 12) = val2
c.Offset(0, 13) = val3
c.Offset(0, 14) = val4
Formation 3
c.Offset(0, 15) = val2
c.Offset(0, 16) = val3
c.Offset(0, 17) = val4
etc...
Les valeurs où je receuille les informations ne changent pas à savoir:
val1 = .Cells(4, 14).Value
val2 = .Cells(18, 20) 'présence
val3 = .Cells(3, 19) 'méthode de paiement
val4 = .Cells(21, 11) 'coût
J'espère que ces informations vous serons utiles
--
Richard
"Daniel.C" a écrit :Plutôt :
With Worksheets("Membres")
For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
c.Offset(0, 6 + val1 * 3) = val2
c.Offset(0, 7 + val1 * 3) = val3
c.Offset(0, 8 + val1 * 3) = val4
Next c
End With
DanielBonjour.
Si j'ai bien compris :
With Worksheets("Membres")
For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
c.Offset(0, 6 * val1 * 3) = val2
c.Offset(0, 7 * val1 * 3) = val3
c.Offset(0, 8 * val1 * 3) = val4
Next c
End With
DanielBonjour Daniel
En effet j'ai corrigé ma macro mais je ne sais pas comment la corriger
cette macro pour qu'elle soit encore plus efficace.
J'aimerais ajouter une variante à cette macro
Dans le classeur "Info" (S4) est indiqué le No. de la formation (de 1 à
5) Donc la macro ci-joint est celle de la formation #2
Pour les autres formations ce qui change sont où coller les informations
Formation #3 c.Offset(0, 15) = val2
c.Offset(0, 16) = val3
c.Offset(0, 17) = val4
Formation #4 c.Offset(0, 18) = val2
c.Offset(0, 19) = val3
c.Offset(0, 20) = val4
Formation #5
c.Offset(0, 21) = val2
c.Offset(0, 22) = val3
c.Offset(0, 23) = val4
Voici la macro corrigé
Dim c As Range, val1, val2, val3, val4
With Worksheets("Info")
val1 = .Cells(4, 14).Value
val2 = .Cells(18, 20) 'présence
val3 = .Cells(3, 19) 'méthode de paiement
val4 = .Cells(21, 11) 'coût
End With
With Worksheets("Membres")
For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
If c = val1 Then
c.Offset(0, 12) = val2
c.Offset(0, 13) = val3
c.Offset(0, 14) = val4
End If
Next c
End With
Worksheets("Info").Activate
Range("B2").Select
End Sub
-- Nitrof
"Daniel.C" a écrit :Bonjour.
A mon avis, le problème vient de tes données. Peux-tu mettre ton
classeur sur www.cjoint.com en effaçant les données confidentielles et
poster ici l'adresse générée ?
Cordialement.
DanielJ'ai une macro qui fonctionne bien mais seulement pour une commande.
Je ne sais pas comment voici ma commande. Si quelqu'un peut trouver
m'aider ce serait grandement apprécié
-- Dim id, ligne As Integer
Worksheets("Info").Cells(18, 20).Copy
id = Worksheets("Info").Cells(2, 19).Value
With Worksheets("Membres")
.Activate
ligne = 10
While .Cells(ligne, 1) <> ""
If .Cells(ligne, 1) = id Then
.Cells(ligne, 15).Select
Selection.PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
'2e commande
Worksheets("Info").Cells(3, 20).Copy
id = Worksheets("Info").Cells(3, 19).Value
With Worksheets("Membres")
.Activate
ligne = 10
While .Cells(ligne, 1) <> ""
If .Cells(ligne, 1) = id Then
.Cells(ligne, 16).Select
Selection.PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
GoTo fin
End If
ligne = ligne + 1
Wend
End With
fin: Worksheets("Info").Activate
Range("B2").Select
Réponse. Je pensais que val1 était le numéro de formation
Donc, il faut remplacer val1 par le n° de formation :
noForm =[Info!S4]
c.Offset(0, 6 + noForm * 3) = val2
Daniel
> Question
> Où prends-tu la valeur Info(4,19) qui est la référence du # de formation,
> c'est ça que je ne parviens pas à comprendre
> --
> Nitrof
>
>
> "Daniel.C" a écrit :
>
>> Ce que je comprends :
>> Pour la formation 1 :
>> c.Offset(0, 9) = val2
>> Pour la formation 2 :
>> c.Offset(0, 12) = val2
>> Pour la formation 3 :
>> c.Offset(0, 15) = val2
>> Soit un décalage de 3 colonnes.
>> Val1 contenant le numéro de la formation, de 1 à 5
>> j'ai écrit :
>> c.Offset(0, 6 + val1 * 3) = val2
>> et de même pour val3 et val4.
>> Ce qui me semble convenir à toutes les formations ?
>> Daniel
>>
>>
>>> Merci de ton aide mais ça fonctionne pas.
>>>
>>> Comme j'ai expliqué au préalable, ma macro fonctionne correctement,
>>> cependant je dois avoir plusieur bouton pour lancer la formule.
>>> Je donne 5 formations/an (avril, mai, juin, sept & nov) que j''identifie de
>>> 1 à 5 (information situé dans ma feuille "Info en (4,19))
>>> Donc avec le même bouton, j'aimerais pouvoir lance la macro selon la date
>>> et coller les infos dans les cellules suivantes
>>> Formation 2
>>> c.Offset(0, 12) = val2
>>> c.Offset(0, 13) = val3
>>> c.Offset(0, 14) = val4
>>> Formation 3
>>> c.Offset(0, 15) = val2
>>> c.Offset(0, 16) = val3
>>> c.Offset(0, 17) = val4
>>> etc...
>>> Les valeurs où je receuille les informations ne changent pas à savoir:
>>> val1 = .Cells(4, 14).Value
>>> val2 = .Cells(18, 20) 'présence
>>> val3 = .Cells(3, 19) 'méthode de paiement
>>> val4 = .Cells(21, 11) 'coût
>>>
>>> J'espère que ces informations vous serons utiles
>>>
>>> --
>>> Richard
>>>
>>>
>>> "Daniel.C" a écrit :
>>>
>>>> Plutôt :
>>>> With Worksheets("Membres")
>>>> For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
>>>> c.Offset(0, 6 + val1 * 3) = val2
>>>> c.Offset(0, 7 + val1 * 3) = val3
>>>> c.Offset(0, 8 + val1 * 3) = val4
>>>>
>>>> Next c
>>>> End With
>>>>
>>>> Daniel
>>>>
>>>>> Bonjour.
>>>>> Si j'ai bien compris :
>>>>>
>>>>> With Worksheets("Membres")
>>>>> For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
>>>>> c.Offset(0, 6 * val1 * 3) = val2
>>>>> c.Offset(0, 7 * val1 * 3) = val3
>>>>> c.Offset(0, 8 * val1 * 3) = val4
>>>>>
>>>>> Next c
>>>>> End With
>>>>>
>>>>> Daniel
>>>>>
>>>>>> Bonjour Daniel
>>>>>>
>>>>>> En effet j'ai corrigé ma macro mais je ne sais pas comment la corriger
>>>>>> cette macro pour qu'elle soit encore plus efficace.
>>>>>>
>>>>>> J'aimerais ajouter une variante à cette macro
>>>>>> Dans le classeur "Info" (S4) est indiqué le No. de la formation (de 1 à
>>>>>> 5) Donc la macro ci-joint est celle de la formation #2
>>>>>> Pour les autres formations ce qui change sont où coller les informations
>>>>>> Formation #3 c.Offset(0, 15) = val2
>>>>>> c.Offset(0, 16) = val3
>>>>>> c.Offset(0, 17) = val4
>>>>>> Formation #4 c.Offset(0, 18) = val2
>>>>>> c.Offset(0, 19) = val3
>>>>>> c.Offset(0, 20) = val4
>>>>>> Formation #5
>>>>>> c.Offset(0, 21) = val2
>>>>>> c.Offset(0, 22) = val3
>>>>>> c.Offset(0, 23) = val4
>>>>>>
>>>>>> Voici la macro corrigé
>>>>>>
>>>>>> Dim c As Range, val1, val2, val3, val4
>>>>>>
>>>>>> With Worksheets("Info")
>>>>>> val1 = .Cells(4, 14).Value
>>>>>> val2 = .Cells(18, 20) 'présence
>>>>>> val3 = .Cells(3, 19) 'méthode de paiement
>>>>>> val4 = .Cells(21, 11) 'coût
>>>>>>
>>>>>> End With
>>>>>>
>>>>>> With Worksheets("Membres")
>>>>>> For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
>>>>>> If c = val1 Then
>>>>>> c.Offset(0, 12) = val2
>>>>>> c.Offset(0, 13) = val3
>>>>>> c.Offset(0, 14) = val4
>>>>>>
>>>>>> End If
>>>>>> Next c
>>>>>> End With
>>>>>>
>>>>>> Worksheets("Info").Activate
>>>>>> Range("B2").Select
>>>>>>
>>>>>> End Sub
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> -- Nitrof
>>>>>>
>>>>>>
>>>>>> "Daniel.C" a écrit :
>>>>>>
>>>>>>> Bonjour.
>>>>>>> A mon avis, le problème vient de tes données. Peux-tu mettre ton
>>>>>>> classeur sur www.cjoint.com en effaçant les données confidentielles et
>>>>>>> poster ici l'adresse générée ?
>>>>>>> Cordialement.
>>>>>>> Daniel
>>>>>>>
>>>>>>>> J'ai une macro qui fonctionne bien mais seulement pour une commande.
>>>>>>>> Je ne sais pas comment voici ma commande. Si quelqu'un peut trouver
>>>>>>>> m'aider ce serait grandement apprécié
>>>>>>>>
>>>>>>>> -- Dim id, ligne As Integer
>>>>>>>> Worksheets("Info").Cells(18, 20).Copy
>>>>>>>> id = Worksheets("Info").Cells(2, 19).Value
>>>>>>>> With Worksheets("Membres")
>>>>>>>> .Activate
>>>>>>>> ligne = 10
>>>>>>>> While .Cells(ligne, 1) <> ""
>>>>>>>> If .Cells(ligne, 1) = id Then
>>>>>>>> .Cells(ligne, 15).Select
>>>>>>>> Selection.PasteSpecial Paste:=xlPasteValues,
>>>>>>>> Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
>>>>>>>> '2e commande
>>>>>>>> Worksheets("Info").Cells(3, 20).Copy
>>>>>>>> id = Worksheets("Info").Cells(3, 19).Value
>>>>>>>> With Worksheets("Membres")
>>>>>>>> .Activate
>>>>>>>> ligne = 10
>>>>>>>> While .Cells(ligne, 1) <> ""
>>>>>>>> If .Cells(ligne, 1) = id Then
>>>>>>>> .Cells(ligne, 16).Select
>>>>>>>> Selection.PasteSpecial Paste:=xlPasteValues,
>>>>>>>> Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
>>>>>>>> GoTo fin
>>>>>>>> End If
>>>>>>>> ligne = ligne + 1
>>>>>>>> Wend
>>>>>>>> End With
>>>>>>>> fin: Worksheets("Info").Activate
>>>>>>>> Range("B2").Select
>>>>>>>
>>>>>>>
>>>>
>>>>
>>>>
>>
>>
>>
Réponse. Je pensais que val1 était le numéro de formation
Donc, il faut remplacer val1 par le n° de formation :
noForm =[Info!S4]
c.Offset(0, 6 + noForm * 3) = val2
Daniel
> Question
> Où prends-tu la valeur Info(4,19) qui est la référence du # de formation,
> c'est ça que je ne parviens pas à comprendre
> --
> Nitrof
>
>
> "Daniel.C" a écrit :
>
>> Ce que je comprends :
>> Pour la formation 1 :
>> c.Offset(0, 9) = val2
>> Pour la formation 2 :
>> c.Offset(0, 12) = val2
>> Pour la formation 3 :
>> c.Offset(0, 15) = val2
>> Soit un décalage de 3 colonnes.
>> Val1 contenant le numéro de la formation, de 1 à 5
>> j'ai écrit :
>> c.Offset(0, 6 + val1 * 3) = val2
>> et de même pour val3 et val4.
>> Ce qui me semble convenir à toutes les formations ?
>> Daniel
>>
>>
>>> Merci de ton aide mais ça fonctionne pas.
>>>
>>> Comme j'ai expliqué au préalable, ma macro fonctionne correctement,
>>> cependant je dois avoir plusieur bouton pour lancer la formule.
>>> Je donne 5 formations/an (avril, mai, juin, sept & nov) que j''identifie de
>>> 1 à 5 (information situé dans ma feuille "Info en (4,19))
>>> Donc avec le même bouton, j'aimerais pouvoir lance la macro selon la date
>>> et coller les infos dans les cellules suivantes
>>> Formation 2
>>> c.Offset(0, 12) = val2
>>> c.Offset(0, 13) = val3
>>> c.Offset(0, 14) = val4
>>> Formation 3
>>> c.Offset(0, 15) = val2
>>> c.Offset(0, 16) = val3
>>> c.Offset(0, 17) = val4
>>> etc...
>>> Les valeurs où je receuille les informations ne changent pas à savoir:
>>> val1 = .Cells(4, 14).Value
>>> val2 = .Cells(18, 20) 'présence
>>> val3 = .Cells(3, 19) 'méthode de paiement
>>> val4 = .Cells(21, 11) 'coût
>>>
>>> J'espère que ces informations vous serons utiles
>>>
>>> --
>>> Richard
>>>
>>>
>>> "Daniel.C" a écrit :
>>>
>>>> Plutôt :
>>>> With Worksheets("Membres")
>>>> For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
>>>> c.Offset(0, 6 + val1 * 3) = val2
>>>> c.Offset(0, 7 + val1 * 3) = val3
>>>> c.Offset(0, 8 + val1 * 3) = val4
>>>>
>>>> Next c
>>>> End With
>>>>
>>>> Daniel
>>>>
>>>>> Bonjour.
>>>>> Si j'ai bien compris :
>>>>>
>>>>> With Worksheets("Membres")
>>>>> For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
>>>>> c.Offset(0, 6 * val1 * 3) = val2
>>>>> c.Offset(0, 7 * val1 * 3) = val3
>>>>> c.Offset(0, 8 * val1 * 3) = val4
>>>>>
>>>>> Next c
>>>>> End With
>>>>>
>>>>> Daniel
>>>>>
>>>>>> Bonjour Daniel
>>>>>>
>>>>>> En effet j'ai corrigé ma macro mais je ne sais pas comment la corriger
>>>>>> cette macro pour qu'elle soit encore plus efficace.
>>>>>>
>>>>>> J'aimerais ajouter une variante à cette macro
>>>>>> Dans le classeur "Info" (S4) est indiqué le No. de la formation (de 1 à
>>>>>> 5) Donc la macro ci-joint est celle de la formation #2
>>>>>> Pour les autres formations ce qui change sont où coller les informations
>>>>>> Formation #3 c.Offset(0, 15) = val2
>>>>>> c.Offset(0, 16) = val3
>>>>>> c.Offset(0, 17) = val4
>>>>>> Formation #4 c.Offset(0, 18) = val2
>>>>>> c.Offset(0, 19) = val3
>>>>>> c.Offset(0, 20) = val4
>>>>>> Formation #5
>>>>>> c.Offset(0, 21) = val2
>>>>>> c.Offset(0, 22) = val3
>>>>>> c.Offset(0, 23) = val4
>>>>>>
>>>>>> Voici la macro corrigé
>>>>>>
>>>>>> Dim c As Range, val1, val2, val3, val4
>>>>>>
>>>>>> With Worksheets("Info")
>>>>>> val1 = .Cells(4, 14).Value
>>>>>> val2 = .Cells(18, 20) 'présence
>>>>>> val3 = .Cells(3, 19) 'méthode de paiement
>>>>>> val4 = .Cells(21, 11) 'coût
>>>>>>
>>>>>> End With
>>>>>>
>>>>>> With Worksheets("Membres")
>>>>>> For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
>>>>>> If c = val1 Then
>>>>>> c.Offset(0, 12) = val2
>>>>>> c.Offset(0, 13) = val3
>>>>>> c.Offset(0, 14) = val4
>>>>>>
>>>>>> End If
>>>>>> Next c
>>>>>> End With
>>>>>>
>>>>>> Worksheets("Info").Activate
>>>>>> Range("B2").Select
>>>>>>
>>>>>> End Sub
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> -- Nitrof
>>>>>>
>>>>>>
>>>>>> "Daniel.C" a écrit :
>>>>>>
>>>>>>> Bonjour.
>>>>>>> A mon avis, le problème vient de tes données. Peux-tu mettre ton
>>>>>>> classeur sur www.cjoint.com en effaçant les données confidentielles et
>>>>>>> poster ici l'adresse générée ?
>>>>>>> Cordialement.
>>>>>>> Daniel
>>>>>>>
>>>>>>>> J'ai une macro qui fonctionne bien mais seulement pour une commande.
>>>>>>>> Je ne sais pas comment voici ma commande. Si quelqu'un peut trouver
>>>>>>>> m'aider ce serait grandement apprécié
>>>>>>>>
>>>>>>>> -- Dim id, ligne As Integer
>>>>>>>> Worksheets("Info").Cells(18, 20).Copy
>>>>>>>> id = Worksheets("Info").Cells(2, 19).Value
>>>>>>>> With Worksheets("Membres")
>>>>>>>> .Activate
>>>>>>>> ligne = 10
>>>>>>>> While .Cells(ligne, 1) <> ""
>>>>>>>> If .Cells(ligne, 1) = id Then
>>>>>>>> .Cells(ligne, 15).Select
>>>>>>>> Selection.PasteSpecial Paste:=xlPasteValues,
>>>>>>>> Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
>>>>>>>> '2e commande
>>>>>>>> Worksheets("Info").Cells(3, 20).Copy
>>>>>>>> id = Worksheets("Info").Cells(3, 19).Value
>>>>>>>> With Worksheets("Membres")
>>>>>>>> .Activate
>>>>>>>> ligne = 10
>>>>>>>> While .Cells(ligne, 1) <> ""
>>>>>>>> If .Cells(ligne, 1) = id Then
>>>>>>>> .Cells(ligne, 16).Select
>>>>>>>> Selection.PasteSpecial Paste:=xlPasteValues,
>>>>>>>> Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
>>>>>>>> GoTo fin
>>>>>>>> End If
>>>>>>>> ligne = ligne + 1
>>>>>>>> Wend
>>>>>>>> End With
>>>>>>>> fin: Worksheets("Info").Activate
>>>>>>>> Range("B2").Select
>>>>>>>
>>>>>>>
>>>>
>>>>
>>>>
>>
>>
>>
Réponse. Je pensais que val1 était le numéro de formation
Donc, il faut remplacer val1 par le n° de formation :
noForm =[Info!S4]
c.Offset(0, 6 + noForm * 3) = val2
Daniel
> Question
> Où prends-tu la valeur Info(4,19) qui est la référence du # de formation,
> c'est ça que je ne parviens pas à comprendre
> --
> Nitrof
>
>
> "Daniel.C" a écrit :
>
>> Ce que je comprends :
>> Pour la formation 1 :
>> c.Offset(0, 9) = val2
>> Pour la formation 2 :
>> c.Offset(0, 12) = val2
>> Pour la formation 3 :
>> c.Offset(0, 15) = val2
>> Soit un décalage de 3 colonnes.
>> Val1 contenant le numéro de la formation, de 1 à 5
>> j'ai écrit :
>> c.Offset(0, 6 + val1 * 3) = val2
>> et de même pour val3 et val4.
>> Ce qui me semble convenir à toutes les formations ?
>> Daniel
>>
>>
>>> Merci de ton aide mais ça fonctionne pas.
>>>
>>> Comme j'ai expliqué au préalable, ma macro fonctionne correctement,
>>> cependant je dois avoir plusieur bouton pour lancer la formule.
>>> Je donne 5 formations/an (avril, mai, juin, sept & nov) que j''identifie de
>>> 1 à 5 (information situé dans ma feuille "Info en (4,19))
>>> Donc avec le même bouton, j'aimerais pouvoir lance la macro selon la date
>>> et coller les infos dans les cellules suivantes
>>> Formation 2
>>> c.Offset(0, 12) = val2
>>> c.Offset(0, 13) = val3
>>> c.Offset(0, 14) = val4
>>> Formation 3
>>> c.Offset(0, 15) = val2
>>> c.Offset(0, 16) = val3
>>> c.Offset(0, 17) = val4
>>> etc...
>>> Les valeurs où je receuille les informations ne changent pas à savoir:
>>> val1 = .Cells(4, 14).Value
>>> val2 = .Cells(18, 20) 'présence
>>> val3 = .Cells(3, 19) 'méthode de paiement
>>> val4 = .Cells(21, 11) 'coût
>>>
>>> J'espère que ces informations vous serons utiles
>>>
>>> --
>>> Richard
>>>
>>>
>>> "Daniel.C" a écrit :
>>>
>>>> Plutôt :
>>>> With Worksheets("Membres")
>>>> For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
>>>> c.Offset(0, 6 + val1 * 3) = val2
>>>> c.Offset(0, 7 + val1 * 3) = val3
>>>> c.Offset(0, 8 + val1 * 3) = val4
>>>>
>>>> Next c
>>>> End With
>>>>
>>>> Daniel
>>>>
>>>>> Bonjour.
>>>>> Si j'ai bien compris :
>>>>>
>>>>> With Worksheets("Membres")
>>>>> For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
>>>>> c.Offset(0, 6 * val1 * 3) = val2
>>>>> c.Offset(0, 7 * val1 * 3) = val3
>>>>> c.Offset(0, 8 * val1 * 3) = val4
>>>>>
>>>>> Next c
>>>>> End With
>>>>>
>>>>> Daniel
>>>>>
>>>>>> Bonjour Daniel
>>>>>>
>>>>>> En effet j'ai corrigé ma macro mais je ne sais pas comment la corriger
>>>>>> cette macro pour qu'elle soit encore plus efficace.
>>>>>>
>>>>>> J'aimerais ajouter une variante à cette macro
>>>>>> Dans le classeur "Info" (S4) est indiqué le No. de la formation (de 1 à
>>>>>> 5) Donc la macro ci-joint est celle de la formation #2
>>>>>> Pour les autres formations ce qui change sont où coller les informations
>>>>>> Formation #3 c.Offset(0, 15) = val2
>>>>>> c.Offset(0, 16) = val3
>>>>>> c.Offset(0, 17) = val4
>>>>>> Formation #4 c.Offset(0, 18) = val2
>>>>>> c.Offset(0, 19) = val3
>>>>>> c.Offset(0, 20) = val4
>>>>>> Formation #5
>>>>>> c.Offset(0, 21) = val2
>>>>>> c.Offset(0, 22) = val3
>>>>>> c.Offset(0, 23) = val4
>>>>>>
>>>>>> Voici la macro corrigé
>>>>>>
>>>>>> Dim c As Range, val1, val2, val3, val4
>>>>>>
>>>>>> With Worksheets("Info")
>>>>>> val1 = .Cells(4, 14).Value
>>>>>> val2 = .Cells(18, 20) 'présence
>>>>>> val3 = .Cells(3, 19) 'méthode de paiement
>>>>>> val4 = .Cells(21, 11) 'coût
>>>>>>
>>>>>> End With
>>>>>>
>>>>>> With Worksheets("Membres")
>>>>>> For Each c In .Range("c10", .[c65536].End(xlUp).Address).Cells
>>>>>> If c = val1 Then
>>>>>> c.Offset(0, 12) = val2
>>>>>> c.Offset(0, 13) = val3
>>>>>> c.Offset(0, 14) = val4
>>>>>>
>>>>>> End If
>>>>>> Next c
>>>>>> End With
>>>>>>
>>>>>> Worksheets("Info").Activate
>>>>>> Range("B2").Select
>>>>>>
>>>>>> End Sub
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> -- Nitrof
>>>>>>
>>>>>>
>>>>>> "Daniel.C" a écrit :
>>>>>>
>>>>>>> Bonjour.
>>>>>>> A mon avis, le problème vient de tes données. Peux-tu mettre ton
>>>>>>> classeur sur www.cjoint.com en effaçant les données confidentielles et
>>>>>>> poster ici l'adresse générée ?
>>>>>>> Cordialement.
>>>>>>> Daniel
>>>>>>>
>>>>>>>> J'ai une macro qui fonctionne bien mais seulement pour une commande.
>>>>>>>> Je ne sais pas comment voici ma commande. Si quelqu'un peut trouver
>>>>>>>> m'aider ce serait grandement apprécié
>>>>>>>>
>>>>>>>> -- Dim id, ligne As Integer
>>>>>>>> Worksheets("Info").Cells(18, 20).Copy
>>>>>>>> id = Worksheets("Info").Cells(2, 19).Value
>>>>>>>> With Worksheets("Membres")
>>>>>>>> .Activate
>>>>>>>> ligne = 10
>>>>>>>> While .Cells(ligne, 1) <> ""
>>>>>>>> If .Cells(ligne, 1) = id Then
>>>>>>>> .Cells(ligne, 15).Select
>>>>>>>> Selection.PasteSpecial Paste:=xlPasteValues,
>>>>>>>> Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
>>>>>>>> '2e commande
>>>>>>>> Worksheets("Info").Cells(3, 20).Copy
>>>>>>>> id = Worksheets("Info").Cells(3, 19).Value
>>>>>>>> With Worksheets("Membres")
>>>>>>>> .Activate
>>>>>>>> ligne = 10
>>>>>>>> While .Cells(ligne, 1) <> ""
>>>>>>>> If .Cells(ligne, 1) = id Then
>>>>>>>> .Cells(ligne, 16).Select
>>>>>>>> Selection.PasteSpecial Paste:=xlPasteValues,
>>>>>>>> Operation:=xlNone, SkipBlanks:úlse, Transpose:úlse
>>>>>>>> GoTo fin
>>>>>>>> End If
>>>>>>>> ligne = ligne + 1
>>>>>>>> Wend
>>>>>>>> End With
>>>>>>>> fin: Worksheets("Info").Activate
>>>>>>>> Range("B2").Select
>>>>>>>
>>>>>>>
>>>>
>>>>
>>>>
>>
>>
>>