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

VP

11 réponses
Avatar
Richard
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

fin: Worksheets("Info").Activate
Range("B2").Select

1 réponse

1 2
Avatar
Daniel.C
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

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































1 2