Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBAPlus de souplesse dans ma macro évènementielle

  • Initiateur de la discussion Initiateur de la discussion Arpette
  • 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 !

Arpette

XLDnaute Impliqué
Bonjour à toute et à tous,
J'ai une macro évènementielle, qui fonctionne bien. Je suhaiterais améliorer 2 points :

1) dans la feuille "Devis" si je supprime pour apporter une correction, une référence exemple C60 les lignes du dessous remontent. Je souhaiterais garder cette ligne et pouvoir ressaisir C60.

2) si j'apporte une modifiction dans ma feuille "Fournisseur" exemple prix de l'heure, aujourd'hui la macro agit sur tous les calculs de cette feuille. Ce que je souhaiterais, c'est que cette modification agisse également sur la feuille "Devis" dans le cas où il est rempli. Aujourd'hui je dois tout retaper😛

Ci-joint fichier
Fichier


Merci de votre aide
@+
 
Re : VBAPlus de souplesse dans ma macro évènementielle

Salut Arpette,

Il y'a quelque chose qui m'intrigue !
1) Tout est explicité dans ton code ... tu ne peux pas faire la modif. toi même !?

2) c'est pour cela que l'on préfère utiliser des fonctions telle que : RECHERCHEV()
Lors d'une modification dans ta BdD, celle-ci est automatiquement répercutée dans les autres feuilles

A+
 
Re : VBAPlus de souplesse dans ma macro évènementielle

Bonsoir à tous, en suivant les conseils de Bruno, j'ai réussi à modifier mon code. Néanmoins, il me reste un problème que je n'arrive pas à résoudre. Si j'éfface une référence en A, j'éfface également B,C,D,E,F et la j'ai un bug sur cette ligne.
Merci de votre aide.
@+
Code:
Cells(Target.Row, 6).Value = Application.WorksheetFunction.Round _
    (IIf(Cells(Target.Row, 4).Value * Cells(Target.Row, 5).Value = 0, "", Cells(Target.Row, 4).Value * Cells(Target.Row, 5).Value), 2)
 
Re : VBAPlus de souplesse dans ma macro évènementielle

Salut Arpette,

Avec un test
Code:
If Cells(Target.Row, 4).Value <> "" or Cells(Target.Row, 4).Value <>0 then
Cells(Target.Row, 6).Value = Application.WorksheetFunction.Round _
 (IIf(Cells(Target.Row, 4).Value * Cells(Target.Row, 5).Value = 0, "", Cells(Target.Row, 4).Value * Cells(Target.Row, 5).Value), 2)
End If

A+
 
Re : VBAPlus de souplesse dans ma macro évènementielle

Bonsoir


Essaies ainsi
Code:
Cells(Target.Row, 6).Value = Application.WorksheetFunction.Round _
    (IIf(Cells(Target.Row, 4).Value * Cells(Target.Row, 5).Value = 0, 0, Cells(Target.Row, 4).Value * Cells(Target.Row, 5).Value), 2)

EDITION: bonsoir BrunoM45
 
Re : VBAPlus de souplesse dans ma macro évènementielle

Salut Bruno, Staple,
merci pour vos réponses, j'ai pris celle de Staple qui ne modifie presque pas mon code.
Merci à vous et plus particulièrement à Bruno qui a grandement participé à l'élaboration de mon projet.
Bonne soirée à vous.
@+
 
Re : VBAPlus de souplesse dans ma macro évènementielle

Re, je reviens vers toi Bruno qu'entends-tu par
2) c'est pour cela que l'on préfère utiliser des fonctions telle que : RECHERCHEV()
Lors d'une modification dans ta BdD, celle-ci est automatiquement répercutée dans les autres feuilles
On fait bien une rechercheV ici.
Code:
Target = VBA.UCase(Target)                            ' Met en majuscule
  With Sheets("Fournisseurs")                         ' Prend en compte l'onglet "Fournisseurs"
   Set pl = .Range("A3:A" & .Range("A65536").End(xlUp).Row) 'Définit la plage  recherche
  End With                                   'Fin de la prise en compte de l'onglet "Fournisseurs"
   Set r = pl.Find(Target.Value, , xlValues, xlWhole)               ' Définit la recherche
        If r Is Nothing Then                                        ' Si pas trouvé on sort
          MsgBox "Code non trouvé !"                                ' Message
          Application.EnableEvents = True
          Exit Sub
Merci de ton aide
@+
Je viens de m'apercevoir qu'on ne fait pas une rechercheV, je vais creuser, mais tu peux m'aider😱
@+
 
Dernière édition:
Re : VBAPlus de souplesse dans ma macro évènementielle

Bonsoir Bruno, Staple, je reviens vers vous, je n'arrive pas à imbriquer ma rechercheV dans ma feuille"Devis", je ne voudrais pas tout casser.
Si vous pouviez m'aider.
Merci d'avance.
@+
 
Re : VBAPlus de souplesse dans ma macro évènementielle

Bonsoir à toutes et à tous, j'ai essayé d'intégrer une rechecheV dans mon code mais il ne me renvoi rien. Comprends pas😕
Merci de votre aide
@+
J'ai placé mon code après ces lignes
Code:
If Target.Row > Cel.Row - 2 Then
          Target.Copy Cells(51, "A")                                  ' Recopie de la référence
          Target.ClearContents                                        ' Efface l'ancienne référence
          Set Target = Cells(51, "A")                                 ' Actualise Target
        End If
Code:
Dim pl1 As Range     ' déclare la variable pl (PLage)
Dim r1 As Range      ' déclare la variable r (Recherche)
Dim h As Range, h1 As Range, h2 As Range
With Worksheets("Devis")
     Set r1 = .Range("A20:A" & .Range("A108").End(xlUp).Row)
    End With
  
    With Sheets("Fournisseurs")
     Set pl1 = .Range("A3:E" & .Range("A65536").End(xlUp).Row)
    End With
    On Error Resume Next
    Do While r1.Row > 19
        If r1 <> "" Then
            h = WorksheetFunction.VLookup(r1, pl1, 2, True)
            h1 = WorksheetFunction.VLookup(r1, pl1, 3, True)
            h2 = WorksheetFunction.VLookup(r1, pl1, 5, True)
            
            If Err.Number = 0 Then
                r1(1, 2) = h
                r1(1, 3) = h1
                r1(1, 5) = h2
            End If
            Err.Clear
        End If
    Set r1 = r1(0, 1) ' Recule d'une ligne
    Loop
 
- 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

Discussions similaires

Réponses
3
Affichages
645
M
Réponses
6
Affichages
1 K
maxime45
M
A
Réponses
12
Affichages
2 K
AnjyD
A
A
Réponses
2
Affichages
1 K
A
S
Réponses
10
Affichages
4 K
Sylvain29
S
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…