Problème entre une fonction et une Sub OnChange, incompréhensible !?

  • Initiateur de la discussion Initiateur de la discussion Compte Supprimé 979
  • 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 !

C

Compte Supprimé 979

Guest
Bonjour à tous

J'ai 2 problèmes dans mon fichier ci-joint

Problème 1 :
Lors de la modification dans la colonne 'E' du prix, la Sub MàJPrix se lance, mais la fonction n'est plus calculée
Une saisie dans n'importe qu'elle autre colonne et la fonction est OK


Problème 2 :
Dans ma fonction la recherche se fait simplement et fonctionne
Dans ma sub je suis obligé de faire 2 type de recherches, sinon ça ne fonctionne pas !?

Allez-vous trouver le pourquoi du comment 😛😉

A+
 
Dernière modification par un modérateur:
Re : Problème entre une fonction et une Sub OnChange, incompréhensible !?

Bonjour Francedemo,

Désolé, mais ce n'est pas ça, les 4 premières lignes sont bien utilisées dans mon fichier original 😱

Voici le fichier avec le bon format

A+
 

Pièces jointes

Re : Problème entre une fonction et une Sub OnChange, incompréhensible !?

Bonjour,
Pas sûr d'avoir compris mais pour la sub, essaie comme cela pour voir :
Code:
Sub MajDesPrix()
  Dim CodeArt As String, Prix As String, Ligne As Long
  Dim DLig As Long, Lig As Long, LigD, ShtD As Worksheet
  ' Empêcher le recalcul = moins long
  Application.Calculation = xlCalculationManual
  ' avec la feuile de bgpu
  With ActiveSheet
    ' Trouver la dernière ligne contenant un article
    DLig = .Range("A" & Rows.Count).End(xlUp).Row
    ' Pour chaque ligne
    For Lig = 5 To DLig
      ' Mémoriser les infos
      CodeArt = .Range("A" & Lig).Value
      Prix = .Range("E" & Lig).Value
      ' Si aucun prix
      If Prix = "" Then GoTo Suite
      ' Pour chaque feuille
      For Each ShtD In ThisWorkbook.Sheets
        ' Si le nom de la feuille n'est pas un de la liste
        If InStr(1, "Recap", ShtD.Name) = 0 Then
          ' Empêcher les erreurs
          On Error Resume Next
          LigD = 0
          ' Chercher la ligne correspondante au code
        Set LigD = ShtD.Range("A:A").Find(What:=CDbl(CodeArt), LookIn:=xlValues, LookAt:=xlWhole, _
                                        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False)
          On Error GoTo 0
          ' Si une ligne a été trouvée, on inscrit le prix
          If Not LigD Is Nothing Then
          Ligne = LigD.Row
            Application.EnableEvents = False
            ShtD.Range("E" & Ligne).Value = CDec(Prix)
            Application.EnableEvents = True
          End If
        End If
      Next ShtD
Suite:
    Next Lig
  End With
  MsgBox "Les prix ont été mis à jour"
  Application.Calculation = xlCalculationAutomatic
End Sub
A+
 
Re : Problème entre une fonction et une Sub OnChange, incompréhensible !?

Bonjour le fil 🙂,
Chez moi, la Sub ne fonctionne pas du tout 😱...
J'ai réécrit ça qui fonctionne 😛
Code:
Sub MajDesPrix()
Dim AChercher As Range, Cellule As Range, Feuille As Worksheet
Application.Calculation = xlCalculationManual
For Each AChercher In ActiveSheet.Range("A1").Resize(Range("A" & Rows.Count).End(xlUp).Row)
    If AChercher.Offset(0, 4) <> "" Then
        For Each Feuille In ThisWorkbook.Worksheets
            If Feuille.Name <> "Recap" Then
                Set Cellule = Feuille.Columns(1).Find(AChercher, LookAt:=xlWhole, LookIn:=xlValues)
                If Not Cellule Is Nothing Then
                    Cellule.Offset(0, 4) = AChercher.Offset(0, 4)
                End If
            End If
        Next Feuille
    End If
Next AChercher
Application.Calculation = xlCalculationAutomatic
MsgBox "Les prix ont été mis à jour"
End Sub
Je vais essayer de comprendre pour la fonction 🙄...
 
Re : Problème entre une fonction et une Sub OnChange, incompréhensible !?

Re 🙂,
A bien te relire, tu avais mis une évènementielle sur la modification de prix pour que celle-ci déclenche la mise à jour (il y a d'ailleurs des EnableEvents que je n'ai pas remis vu qu'il n'y avait pas d'évènementielle 🙄...)
Dans ce cas-là, si tu saisis uniquement un prix, envoie la valeur de Target à la Sub pour ne faire la mise à jour que d'une seule cellule, si tu copie/colle plusieurs prix, vérifie que c'est bien que dans la colonne prix et envoie la plage Target à la Sub 😉...
Par contre, je ne voie pas pourquoi les quantités auraient changé suite à une modification de prix, donc pourquoi tu veux recalculer ta fonction, mais tu peux essayer un Calculate en fin de Sub 🙄...
Bon courage (et bises à Fanny) 😎
 
Re : Problème entre une fonction et une Sub OnChange, incompréhensible !?

Re 🙂,
J'ai repris ta fonction dans la même veine que ma reprise de ta Sub et j'ai ajouté l’évènementielle qui t'intéresse je pense... 😉
Teste le fichier joint et dit moi 😛 !
J'ai mis en commentaire le test de la valeur, car si on supprime un prix, ça ne me parait pas logique de le garder ailleurs... De même, le message de validation de la MàJ un peu pénible... 🙄
Bonne soirée 😎
 

Pièces jointes

Re : Problème entre une fonction et une Sub OnChange, incompréhensible !?

Bonsoir,

Le code Fonctionne de mon côté mais j'ai pas l'idée pour l'associer a Excel en Foncton par contre il fonctionne très bien est il est adaptable

En faite l faut faire l'inverse une recherche est stocké en tableau (la formule crée) et la glisser vers le bas je suis désolé je savais pas faire de fonction mais se code est super rapide je l'adapterais dans l'autre sens demain

laurent
 

Pièces jointes

Dernière édition:
Re : Problème entre une fonction et une Sub OnChange, incompréhensible !?

Bonsoir à tous


J'ai remplacé partout les virgules par des points dans le champ Article, sans toucher à quoi que ce soit d'autre. Ça roule...


Bonne nuit.



ROGER2327
#6150


Samedi 7 Tatane 139 (Saint Biribi, taulier - fête Suprême Quarte)
2 Thermidor An CCXX, 9,9737h - bouillon-blanc
2012-W29-5T23:56:13Z
 
Re : Problème entre une fonction et une Sub OnChange, incompréhensible !?

Bonjour à tous

Désolé pour ma réponse tardive, mais hier soir j'étais en fiesta 😉 😛
Merci à tous pour vos réponses

@David84, merci beaucoup, mais le problème pour moi n'était pas là 😉

@JNP, merci infiniment pour le code optimisé qui fonctionne vraiment bien sur le fichier donné
a tester sur le fichier du boulot

En revanche, nous avons toujours le même problème avec la fonction qui ne se recalcule pas !?
Mais je pense que je vais faire avec,
il suffit de passer en mode édition (F2) et de valider par Entrée dans une colonne autre que le prix

@ROGER2327, malheureusement, je ne peux et ne doit pas modifier la présentation, il s'agit d'un bordereau de prix 😉


Pour un peu plus d'explications ....
En fait dans ce fichier, dans chaque feuille nous pouvons être amené à modifier la quantité d'articles
d'où ma fonction pour recalculer le total des quantités
Et dans la feuille "recap" nous modifions nos prix en fonction de la quantité totale
d'où ma sub évènementielle pour faire la mise à jour du prix sur chaque feuille (besoin du détail)

A+ tous et encore merci
 
Re : Problème entre une fonction et une Sub OnChange, incompréhensible !?

Re 🙂,
En revanche, nous avons toujours le même problème avec la fonction qui ne se recalcule pas !?
Mais je pense que je vais faire avec,
il suffit de passer en mode édition (F2) et de valider par Entrée dans une colonne autre que le prix
En principe, la fonction se recalcule à l'ouverture 🙄...
As-tu essayé Calculate 😛...
Dans ThisWorkbook
Code:
Private Sub Workbook_Activate()
Calculate
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Calculate
End Sub
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
Calculate
End Sub
en principe, la fonction devrait s'actualiser quand tu changes de feuilles, quand tu reviens sur le fichier 😉
Bonne suite 😎
 
Re : Problème entre une fonction et une Sub OnChange, incompréhensible !?

Re
@David84, merci beaucoup, mais le problème pour moi n'était pas là
Peut-être Bruno mais tout ce que je peux te dire, c'est que lorsque je cliquais sur MAJ des prix, cela ne fonctionnait pas.
C'est pour cela que j'ai regardé vite fait la sub et que la solution que je t'avais proposée permet cette mise à jour.
Pour le reste, je viens de regarder la proposition de Jean-Noël et je crois qu'elle te donne entière satisfaction, et c'est tant mieux !
A+
 
- 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

Réponses
43
Affichages
786
Retour