XL 2016 recherche mot exact

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 !

Frank Bellaisch

XLDnaute Nouveau
Bonjour à tous et merci d'avance à ceux qui pourront m'aider.

Sur le tableau ci-joint, je dois calculer des sommes selon les années et un code spécifique. J'ai écrit une formule mais la recherche par mot ne se fait pas sur le mot exact. Donc si je cherche R1, il va prendre R11, R12 etc etc ce que je ne veux pas.
Je suis totalement bloqué.
Merci de vos conseils.
bonne journée
 

Pièces jointes

Pouvez-vous être plus précis ?

Le fichier que vous avez présenté a 2 tableaux : C4: D6 et B12:E34.

La durée d'exécution de la macro est proportionnelle au nombre de cellules du premier et au nombre de lignes du second.

Combien de valeurs comme R1 sont recherchées en général et combien d'années pour le 1er ?
 
Pourquoi ne répondez-vous pas aux questions posées ?

Pas question de communiquer en dehors du forum, déposez un fichier anonymisé.

Cela dit ce qui prend beaucoup de temps c'est l'instruction InStr(Q(k, 2).Text, P(1, j))

Avec ce fichier (3) et ce code la durée d'exécution est divisée par 3 :
VB:
Sub MAJ()
Dim P As Range, Q As Range, i&, j%, k&, v1, v2, n%
Set P = [B3].CurrentRegion
Set Q = [B11].CurrentRegion
Application.ScreenUpdating = False
For i = 2 To P.Rows.Count
    For j = 2 To P.Columns.Count
        P(i, j) = ""
        For k = 2 To Q.Rows.Count
            If (Q(k, 2) = P(1, j) Or Year(Q(k, 2)) = P(1, j)) And P(1, j) <> "" Then
                v1 = Q(k, 3).MergeArea(1) 'en cas de cellule fusionnée
                If IsNumeric(CStr(v1)) And P(i, 1) <> "" Then
                    v2 = Q(k, 4).MergeArea(1) 'en cas de cellule fusionnée
                    n = InStr(v2, P(i, 1))
                    If n Then If Not IsNumeric(Mid(v2, n + Len(P(i, 1)), 1)) _
                        Then P(i, j) = P(i, j) + v1
                End If
            End If
Next k, j, i
End Sub
 

Pièces jointes

C'est vraiment n'importe quoi, il y a des trous partout et plus du tout de cellules fusionnées.

J'ai quand même adapté la macro :
VB:
Sub MAJ()
Dim P As Range, Q As Range, Pcc%, Qrc&, i&, j%, k&, v1, v2, n%
Set P = [F5:I7] 'à adapter
Set Q = Range("F14:I" & Range("F" & Rows.Count).End(xlUp).Row) 'à adapter
Pcc = P.Columns.Count
Qrc = Q.Rows.Count
Application.ScreenUpdating = False
For i = 1 To P.Rows.Count
    For j = 1 To Pcc
        P(i, j) = ""
        If P(i, 0) <> "" And P(0, j) <> "" Then
            For k = 2 To Qrc
                If (Q(k, 1) = P(0, j) Or Year(Q(k, 1)) = P(0, j)) Then
                    v1 = Q(k, 2).MergeArea(1) 'en cas de cellule fusionnée
                    If IsNumeric(CStr(v1)) Then
                        v2 = Q(k, 4).MergeArea(1) 'en cas de cellule fusionnée
                        n = InStr(v2, P(i, 0))
                        If n Then If Not IsNumeric(Mid(v2, n + Len(P(i, 0)), 1)) _
                            Then P(i, j) = P(i, j) + v1
                    End If
                End If
            Next k
        End If
Next j, i
End Sub
 

Pièces jointes

Oui, j'ai été obligé de créer un nouveau tableau car le poids était supérieur à 1Mo et le forum m'interdisais de poster. J'ai essayé de compresser sans succès. Du coup, en copiant collant, les cellule fusionnées ont disparu et je n'ai pas corrigé. Toutes mes excuses. Merci pour votre travail.
 
- 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
153
Réponses
3
Affichages
642
Réponses
8
Affichages
408
Retour