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:=False, Transpose:=False
'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:=False, Transpose:=False
GoTo fin
End If
ligne = ligne + 1
Wend
End With
Non, désolé, le numéro de formation qui était en S4 est maintenant en T4 ? Mets sur www.cjoint.com un classeur exemple en expliquant ce que tu veux faire, pas en mettant la macro à modifier. Efface les données confidentielles. Poste ensuite l'adresse générée. Daniel
Voila, nous nous comprenons, En Info!(4,20) «c'est notre 1er moteur de recherche qui le # de formation» et en Info!(4,15) «c'est notre 2e moteur de recherche qui est # du membre pour qui nous allons créditer la formation» Est-ce encore clair pour vous -- Richard Merci pour ton effort et ta patience
"Daniel.C" a écrit :
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
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
Non, désolé, le numéro de formation qui était en S4 est maintenant en
T4 ?
Mets sur www.cjoint.com un classeur exemple en expliquant ce que tu
veux faire, pas en mettant la macro à modifier. Efface les données
confidentielles. Poste ensuite l'adresse générée.
Daniel
Voila, nous nous comprenons,
En Info!(4,20) «c'est notre 1er moteur de recherche qui le # de formation»
et en Info!(4,15) «c'est notre 2e moteur de recherche qui est # du membre
pour qui nous allons créditer la formation»
Est-ce encore clair pour vous
--
Richard
Merci pour ton effort et ta patience
"Daniel.C" a écrit :
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
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
Non, désolé, le numéro de formation qui était en S4 est maintenant en T4 ? Mets sur www.cjoint.com un classeur exemple en expliquant ce que tu veux faire, pas en mettant la macro à modifier. Efface les données confidentielles. Poste ensuite l'adresse générée. Daniel
Voila, nous nous comprenons, En Info!(4,20) «c'est notre 1er moteur de recherche qui le # de formation» et en Info!(4,15) «c'est notre 2e moteur de recherche qui est # du membre pour qui nous allons créditer la formation» Est-ce encore clair pour vous -- Richard Merci pour ton effort et ta patience
"Daniel.C" a écrit :
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
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