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

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

job75

XLDnaute Barbatruc
Par contre la limitation est utile sur de petites plages quand le UsedRange est grand.

Voyez ce fichier (2) avec 180 000 lignes occupées.
 

Pièces jointes

  • Limitée(2).xlsm
    974.3 KB · Affichages: 6

Discussions similaires

Réponses
9
Affichages
397
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…