SYNTAXE COLLER VALEUR Apres formule

  • Initiateur de la discussion Initiateur de la discussion poolito
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

P

poolito

Guest
Bonjour,

je cherche a ameliorer cette syntaxe mais en vain.
je copie ma formule et ensuite la valeur obtenue. mais ca mouline trop a mon gout

Private Sub Worksheet_Change(ByVal Target As Range)
Dim fdesign
fdesign = "=IF(RC[-1]<>"""",VLOOKUP(RC[-1],PRODUIT!R1C[-1]:R65536C[7],2,0),"""")"
If Target.Count > 1 Then Exit Sub
If Target.Column = 1 Then Target.Offset(0, 1) = fdesign
Target.Offset(0, 1) = Target.Offset(0, 1).Value

End Sub

Si quelqu'un a une idée pour inserer le .value directement sur la premiere ligne
 
Re : SYNTAXE COLLER VALEUR Apres formule

Bonjour,
Essaie avec ceci :

Dim fdesign
fdesign = "=IF(RC[-1]<>"""",VLOOKUP(RC[-1],PRODUIT!R1C[-1]:R65536C[7],2,0),"""")"
If Target.Count > 1 Then Exit Sub
If Target.Column = 1 Then
Application.EnableEvents = False
Target.Offset(0, 1) = fdesign
Target.Offset(0, 1) = Target.Offset(0, 1).Value
Application.EnableEvents = True
End If

Bonne journée.
John
 
Re : SYNTAXE COLLER VALEUR Apres formule

Bonjour Poolito, John, bonjour le forum,

Une proposition sans passer par une formule (non testé car pas de fichier exemple) :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim R As Range
If Target.Column <> 1 Then Exit Sub
If Target.Value <> "" Then
    Set R = Sheets("PRODUIT").Columns(1).Find(Target.Value, , xlValues, xlWhole)
    If Not R Is Nothing Then Target.Offset(0, 1).Value = R.Offset(0, 1).Value
End If
End Sub
 
Re : SYNTAXE COLLER VALEUR Apres formule

Bonjour Robert, et merci de votre proposition.
Je viens d'ajouter d'autres formules comme ci dessous. Mais je ne comprends pas ou justement sont insérer les formules dans la méthode sans formule que vous proposé? je vous joins un fichier exemple.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim fdesign
Dim funit
Dim fpu
Dim fmontant

fdesign = "=IF(RC[-1]<>"""",VLOOKUP(RC[-1],PRODUIT!R1C[-1]:R65536C[7],2,0),"""")"
funit = "=IF(RC[-7]<>"""",VLOOKUP(RC[-7],PRODUIT!C[-7]:C[-5],3,0),"""")"
fpu = "=IFERROR(IF(RC[-9]="""",IF(RC[2]="""","""",RC[2]),IF(RC[2]="""",RC[45],RC[2])),"""")"
fmontant = "=IFERROR(IF(RC[-2]<>"""",IF(RC[2]="""",SUM(RC[-2]*RC[-1]),""""),""""),"""")"

'si ajout reference
If Target.Count > 1 Then Exit Sub
If Target.Column = 1 Then

Application.DisplayAlerts = False
Application.EnableEvents = False

Target.Offset(0, 1) = fdesign
Target.Offset(0, 7) = funit
Target.Offset(0, 9) = fpu
Target.Offset(0, 10) = fmontant

Target.Offset(0, 1) = Target.Offset(0, 1).Value
Target.Offset(0, 7) = Target.Offset(0, 7).Value
Target.Offset(0, 9) = Target.Offset(0, 9).Value
Target.Offset(0, 10) = Target.Offset(0, 10).Value
Application.EnableEvents = True
End If

'si ajout quantité
If Target.Count > 1 Then Exit Sub
If Target.Column = 9 Then
Application.EnableEvents = False
Target.Offset(0, 2) = fmontant
Target.Offset(0, 2) = Target.Offset(0, 2).Value
Application.EnableEvents = True
End If

'si ajout prix unitaire
If Target.Count > 1 Then Exit Sub
If Target.Column = 10 Then
Application.EnableEvents = False
Target.Offset(0, 1) = fmontant
Target.Offset(0, 1) = Target.Offset(0, 1).Value
Application.DisplayAlerts = True
Application.EnableEvents = True
End If



End Sub
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Retour