XL 2016 recherche mot exact

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

  • calcul tonnage.xlsx
    9.6 KB · Affichages: 18

djidji59430

XLDnaute Barbatruc
Bonjour à tous,

Si j'étais toi, je recommencerais a faire d'abord un VRAI tableau qui présente des valeurs cohérentes dans ses colonnes (colonne des mois et des dates). Par principe, quand on veut travailler sur des dates, on mets des dates, et au format d'excel.
Ensuite, il ne faut pas etre feignant ! et il doit y avoir une data dans chaque cellule !
Les cellules fusionnées sont a proscrire absolument.
Quand tu auras fait cela, des solutions vont t'apparaitre naturellement.
Tout le monde a compris que le critére a prendre en compte est que le 3 éme caractère ne doit pas etre numérique. Et la formule trouvée sera la meme dans chaque cellule.
(A condition, on le répète que tes data soient homogènes !)
On attend donc la nouvelle mouture de ton tableau.

Crdlmt
 

djidji59430

XLDnaute Barbatruc
Bonjour à tous,

Si j'étais toi, je recommencerais a faire d'abord un VRAI tableau qui présente des valeurs cohérentes dans ses colonnes (colonne des mois et des dates). Par principe, quand on veut travailler sur des dates, on mets des dates, et au format d'excel.
Ensuite, il ne faut pas etre feignant ! et il doit y avoir une data dans chaque cellule !
Les cellules fusionnées sont a proscrire absolument.
Quand tu auras fait cela, des solutions vont t'apparaitre naturellement.
Tout le monde a compris que le critére a prendre en compte est que le 3 éme caractère ne doit pas etre numérique. Et la formule trouvée sera la meme dans chaque cellule.
(A condition, on le répète que tes data soient homogènes !)
On attend donc la nouvelle mouture de ton tableau.

Crdlmt
 

Frank Bellaisch

XLDnaute Nouveau
Bonjour,

J'ai extrait la partie du tableau qui est pertinente pour la poster ici (afin de ne pas vous noyer dans des données inutiles). Mais le tableau est cohérent avec les données dont je dispose (je ne vais pas raconter ma vie, ce serait inintéressant).
Ok sur les cellules fusionnées, je vais tenter de trouver une solution mais là encore, c'est cohérent avec le reste du tableau.
Cependant, je ne pense pas que le 3ème caractère ne doit pas être numérique. Comme je le disais dans le message initial, je peux aussi avoir R1 et R13. Du coup, si on cherche R1, il va compter également R13. C'est pourquoi, je ne parviens pas à lui faire chercher uniquement R1.
Mais c'est peut-être insoluble.
Merci en tout cas
 

djidji59430

XLDnaute Barbatruc
Re
Tu fais preuve de mauvaise volonté, ou alors tu ne sais pas ce qu'est une base de données.
Et c'est pourtant ce qu'il te faut pour résoudre efficacement ton problème. Tu vois les chemins tortueux qu'a du emprunter JHA pour te proposer quelque chose, alors qu'a partir d'un tableau, ta question aurait été deja résolue par la formule qu'il t'aurait proposée
 

Frank Bellaisch

XLDnaute Nouveau
Re
je sais très bien ce qu'est une base de données et je te remercie de ne pas porter de jugement de valeur sur ma bonne ou mauvaise volonté. J'ai rien dit sur le "feignant" mais là, ça fait beaucoup alors qu'on ne se connait pas.
Même si mon tableau n'est pas nickel, la formule de JHA ne fonctionne pas sur la ligne 12 par exemple car il y a R1/D1 (je ne peux pas modifier le contenu de la cellule car c'est la donnée qui doit y figurer). Elle ne marche pas non plus sur la ligne 25 car il y a R1+Réemploi.
Je ne peux pas modifier ces contenus car c'est ce qui doit y figurer (j'y peux rien).
Donc merci énormément pour votre temps, vraiment.
Bonne journée
 

job75

XLDnaute Barbatruc
Bonjour à tous,

Plus c'est tordu plus il faut du VBA...
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim P As Range, Q As Range, i&, j%, k&, v1, v2, n%
Set P = [B3].CurrentRegion
Set Q = [B11].CurrentRegion
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
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 InStr(Q(k, 2).Text, 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
Application.EnableEvents = True 'réactive les évènements
End Sub
A+
 

Pièces jointes

  • calcul tonnage(1).xlsm
    17.7 KB · Affichages: 6
Dernière édition:

job75

XLDnaute Barbatruc
Supprimez les fichiers téléchargés et retéléchargez le fichier (1) car j'ai encore fait des modifications.

Appuyez sur la touche <suppr> pour créer une modification.

Bien sûr si le 2ème tableau est grand (plus de 1000 lignes) l'exécution prendra trop de temps.

Dans ce cas prenez ce fichier (2) avec la macro affectée au bouton MAJ :
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 InStr(Q(k, 2).Text, 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

  • calcul tonnage(2).xlsm
    17.8 KB · Affichages: 11

Discussions similaires

Statistiques des forums

Discussions
312 104
Messages
2 085 347
Membres
102 868
dernier inscrit
JJV