XL 2016 VBA ou formule trouver texte dans colonnes de différentes pages

sandvln

XLDnaute Nouveau
Bonjour,

C'est la première fois que je poste sur un forum. J'espère que mes questions seront claires.

J'ai 5 onglets: syndic, pro, particulier, pompes et ma base
Je souhaite que la formule soit dans la colonne A de l'onglet base: le but est de chercher les mots de la colonne G (onglet base) dans les colonnes Q de l'onglet syndic, pro, particulier, pompes et de mettre "CE" quand le mot est présent dans une des colonnes Q de chaque onglet, sinon mettre "PAS CE". Petite particularité, il peut y avoir le même mot présent dans la colonne Q de l'onglet syndic et pompes mais s'il est présent dans l'un ou l'autre, je souhaite toujours avoir "CE" dans la colonne A de l'onglet base

Merci pour votre aide
 

Pièces jointes

  • TEST QUESTION.xlsx
    26.8 KB · Affichages: 13

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

A tester :
=SI(SIERREUR(EQUIV(G2;SYNDIC!Q:Q;0);SIERREUR(EQUIV(G2;PRO!Q:Q;0);SIERREUR(EQUIV(G2;PARTICULIER!Q:Q;0);SIERREUR(EQUIV(G2;POMPES!Q:Q;0);0))))=0;"PAS CE";"CE")

Mais vous devriez limiter vos plage de recherche en évitant les colonnes entières.

Cordialement
 

Pièces jointes

  • TEST QUESTION.xlsx
    25 KB · Affichages: 5

job75

XLDnaute Barbatruc
Bonjour sandvin, Roblochon,

Code:
=REPT("PAS ";NON(NB(SYNDIC!Q:Q;G2)+NB.SI(PRO!Q:Q;G2)+NB.SI(PARTICULIER!Q:Q;G2)+NB.SI(POMPES!Q:Q;G2)))&"CE"
Limiter les plages n'apporte pas grand-chose en terme de rapidité, c'est à mon avis inutile.

Noter que la fonction REPT "pèse" moins lourd en mémoire que la fonction SI.

A+
 

Pièces jointes

  • TEST QUESTION(1).xlsx
    19.3 KB · Affichages: 4

job75

XLDnaute Barbatruc
Toujours un commentaire 'savant' à faire... même sur les recommandations microsoft
J'espère que ceci te convaincra :
VB:
Sub Limitée()
Dim t, n
Application.ScreenUpdating = False
t = Timer
With [C2]
    For n = 1 To 30000
        .Formula = "=COUNTIF(A1:A3,1)"
    Next
End With
MsgBox "Durée " & Format(Timer - t, "0.00 \sec")
End Sub

Sub Non_limitée()
Dim t, n
t = Timer
Application.ScreenUpdating = False
With [D2]
    For n = 1 To 30000
        .Formula = "=COUNTIF(A:A,1)"
    Next
End With
MsgBox "Durée " & Format(Timer - t, "0.00 \sec")
End Sub
Les recommandations de Microsoft sont parfois erronées.
 

Pièces jointes

  • Limitée(1).xlsm
    17.1 KB · Affichages: 8

Discussions similaires

Réponses
9
Affichages
345

Statistiques des forums

Discussions
311 720
Messages
2 081 897
Membres
101 833
dernier inscrit
sandra25