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

pb sommeprod en vba pas de respect de la casse

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

B

bigjer

Guest
Bonjour,
Je suis en train d'effectuer une petite application de gestion de stock pour mon boulot et j'ai un soucis avec ce code :

Private Sub ESREFL1_Change()
If Evaluate("=SumProduct((COLREF =""" & ESREFL1.Value & """) * 1)") > 0 Then
Sheets("Feuil1").Select
Application.Goto Reference:="COLREF"
Range("C2").Activate
Selection.Find(What:=ESREFL1.Value, After:=ActiveCell, LookIn:=xlValues, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
ESDESL1.Value = ActiveCell.Offset(0, -1).Value
Else: ESDESL1.Value = "NON REF"
End If
End Sub


ce code me permet de trouver la désignation rattachée à la reférence
ce code fonctionne très bien mais la fonction sommeprod ne respecte pas la casse

si quelqu'un peut m'aider svp

voici un fichier exemple de ce que je dit.
 

Pièces jointes

Re : pb sommeprod en vba pas de respect de la casse

Je ne sais pas si avec des fonctions Excel ça fonctionne (pas testé) mais as-tu essayé de mettre "Option compare text" en début de module contenant ta macro ?
A tout hasard
 
Re : pb sommeprod en vba pas de respect de la casse

Salut,
Je viens d'essayer mais cela ne fonctionne pas
peut être que je le place mal peut tu me dire exactement où il faut le poser
svp
 
Re : pb sommeprod en vba pas de respect de la casse

bonjour bigjer

Salut Epaf

vois si cela te convient

note :
j'ai remplacé xlpart par xlwhole pour une recherche exacte
par contre j'ai supprimé un parametre nommé qui n'existe pas dans ma version (excel 2000)
 

Pièces jointes

Re : pb sommeprod en vba pas de respect de la casse

Salut,
Je viens d'essayer mais cela ne fonctionne pas
peut être que je le place mal peut tu me dire exactement où il faut le poser
svp
Doit être placé en tête de module avant les macros.
Mais si au contraire tu veux respecter la casse, c'est le paramètre MatchCase:=False que tu dois mettre à True et/ou Option Compare Binary (je n'ai pas compris si tu voulais que la casse soit respectée ou non dans ta recherche)
 
Re : pb sommeprod en vba pas de respect de la casse

bonjour pierrejean,
merci de venir à mon aide
Je ne parviens pas a télécharger le fichier
mais il me semble que j'ai deja essayer ce que tu me dis et ca avait planter
car la recherche d'une valeur par exemple alize090 au lieu de ALIZE090, il ne vas pas la trouver alors que le sommeprod a laisser passer cette valeur
 
Re : pb sommeprod en vba pas de respect de la casse

Ok. Donc quelque soit la casse, tu veux le retrouver, donc on revient à Option Compare Text et à MatchCase:=False 😉
Tu as quelle version d'Excel ?
A+

Salut PierreJean
 
Re : pb sommeprod en vba pas de respect de la casse

Re
le code:

Code:
Private Sub ESREFL1_Change()
If Evaluate("=SumProduct((COLREF =""" & ESREFL1.Value & """) * 1)") > 0 Then
    Sheets("Feuil1").Select
    Application.Goto Reference:="COLREF"
    Range("C2").Activate
    Selection.Find(What:=ESREFL1.Value, After:=ActiveCell, LookIn:=xlValues, _
    LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=False).Activate
    If ActiveCell.Value = ESREFL1.Value Then
      ESDESL1.Value = ActiveCell.Offset(0, -1).Value
    Else
      ESDESL1.Value = "NON REF"
    End If
    'Else: ESDESL1.Value = "NON REF"
End If
End Sub

en supposant que j'aie vu juste
c'est a dire que tu souhaites avoir le resultat si la casse est respectée

ps:

re bonjour Epaf
 
Re : pb sommeprod en vba pas de respect de la casse

Non Epaf c'est le contraire je veut respecter la casse mon pb est que quand je saisie par exemple alize090 alors que la reférence est ALIZE090,la désignation est tout de même trouvée et en changeant matchcase à true comme tu l'a indiqué la macro plante car à mon avis la condition est rempli avec la formule sommeprod car elle ne respecte pas la casse mais la recherche plante car la valeur n'existe pas
 
Re : pb sommeprod en vba pas de respect de la casse

Re pierrejean,
ta macro fonctionne pas trop mal car elle respecte la casse et ne plante pas mais quand je saisie par exemple une référence correcte comme ALIZE090 la désignation s'affiche bien mais si je rajoute une lettre à la suite, la désignation n'est pas raffraichit est reste alors que la réf ALIZE090Z N'EXISTE PAS.
 
Re : pb sommeprod en vba pas de respect de la casse

Je pense qu'il serait possible de remplacer la fonction sommeprod par une fonction qui fait la même chose mais qui respecte la casse
moi je n'en connais pas, je suis un novice
alors si quelqu'un a une idée svp
 
Re : pb sommeprod en vba pas de respect de la casse

re

une solution un peu radicale

Code:
Private Sub ESREFL1_Change()
If Evaluate("=SumProduct((COLREF =""" & ESREFL1.Value & """) * 1)") > 0 Then
    Sheets("Feuil1").Select
    Application.Goto Reference:="COLREF"
    Range("C2").Activate
    Selection.Find(What:=ESREFL1.Value, After:=ActiveCell, LookIn:=xlValues, _
    LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=False).Activate
    If ActiveCell.Value = ESREFL1.Value Then
      ESDESL1.Value = ActiveCell.Offset(0, -1).Value
      ESREFL1.Enabled = False
    Else
      ESDESL1.Value = "NON REF"
    End If
    'Else: ESDESL1.Value = "NON REF"
End If
End Sub
 
Re : pb sommeprod en vba pas de respect de la casse

C'est normal que ça plante si la donnée n'est pas trouvée. Pour ça, tu dois modifier ton code.
Code:
Private Sub ESREFL1_Change()
Dim c As Range
    If Evaluate("=SumProduct((COLREF =""" & ESREFL1.Value & """) * 1)") > 0 Then
        Sheets("Feuil1").Select
        Application.Goto Reference:="COLREF"
        Range("C2").Activate
        With Sheets("Feuil1").Range("C:C")
            Set c = .Find(What:=ESREFL1.Value, After:=ActiveCell, LookIn:=xlValues, _
            LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            MatchCase:=True, SearchFormat:=False)
            If Not c Is Nothing Then
                ESDESL1.Value = Range(c.Address).Offset(0, -1).Value
            End If
        End With
      Else: ESDESL1.Value = "NON REF"
    End If
End Sub
Et là, j'ai testé
 
Re : pb sommeprod en vba pas de respect de la casse

Je viens de voir ton message petitjean, ta solution doit être bonne je pense, je ne l'ai pas encore essayer car il me semble avoir trouvé une solution un peu moins "radicale" comme tu le dis, voici le code que tu m'as donné où j'ai rajouté un else pour le premier if et ça a l'air de fonctionner :
Code:
Private Sub ESREFL1_Change()
If Evaluate("=SumProduct((COLREF =""" & ESREFL1.Value & """) * 1)") > 0 Then
    Sheets("Feuil1").Select
    Application.Goto Reference:="COLREF"
    Range("C2").Activate
    Selection.Find(What:=ESREFL1.Value, After:=ActiveCell, LookIn:=xlValues, _
    LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=False).Activate
    If ActiveCell.Value = ESREFL1.Value Then
      ESDESL1.Value = ActiveCell.Offset(0, -1).Value
    Else
      ESDESL1.Value = "NON REF"
    End If
[COLOR="Red"]Else
ESDESL1.Value = "NON REF"[/COLOR]
End If
End Sub

UN GRAND MERCI A VOUS,
SUPERPETITJEAN
EPAF
 
- 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
2
Affichages
589
Réponses
3
Affichages
640
V
Réponses
4
Affichages
3 K
Valentin94
V
A
Réponses
9
Affichages
3 K
M
  • Question Question
Réponses
0
Affichages
1 K
Mirguy23
M
D
Réponses
22
Affichages
3 K
O
Réponses
20
Affichages
4 K
O
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…