Microsoft 365 boucle difficile pour moi

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 !

Usine à gaz

XLDnaute Barbatruc
Bonjour à toutes et à tous 🙂

Je n'arrive pas à faire ma boucle malgré mes recherches et tentatives.

Le contexte
Dans ma feuille "Appels" : J'ai des lignes de RdVs faits avec dates en col K
Dans ma feuille "Facture": J'ai les RdVs facturés avec dates en col A

Le but est de :
- rechercher toutes les dates de ma feuille "Facture" col A et de les trouver Dans ma feuille "Appels" col K et
- de Remplacer quand on trouve en feuille "Appels" les "RdV Fait" par "RdV Fait Facturé"

Auriez-vous le bon code ?
Avec mes remerciements, je joins le fichier test et je continue mes recherches ...
Amicalement,
lionel 🙂
 

Pièces jointes

Dernière édition:
Bonsoir @Usine à gaz ,

Pourquoi pas une formule en Y2 de la feuille "Facture" à copier vers le bas. Ou mieux transformer facture en tableau structuré et la formule en Y2 se propagera automatiquement vers le bas:
VB:
="RdV "&SI(NB.SI.ENS(Appels!B$6:B$99;E2;Appels!K$6:K$99;A2);"Facturé";"Fait")
 
Bonjour Lionel, mapomme, vgendron,

Le code de la feuille "Appels" :
VB:
Option Compare Text 'la casse est ignorée

Private Sub Worksheet_Activate()
Dim d As Object, tablo, i&, x$, P As Range, resu$()
'---liste sans doublon---
Set d = CreateObject("Scripting.Dictionary")
d.CompareMode = vbTextCompare 'la casse est ignorée
tablo = Sheets("Facture").UsedRange.Resize(, 25) 'matrice, plus rapide
For i = 2 To UBound(tablo)
    x = Application.Trim(tablo(i, 25))
    If x = "RdV Fait" Then d(x & tablo(i, 1) & tablo(i, 5)) = ""
Next i
'---tableau des résultats---
Set P = Range("A1", UsedRange).Resize(, 11)
If P.Rows.Count < 6 Then Exit Sub
Set P = P.Offset(5).Resize(P.Rows.Count - 5)
tablo = P 'matrice, plus rapide
ReDim resu(1 To UBound(tablo), 1 To 1)
For i = 1 To UBound(tablo)
    x = Application.Trim(Replace(tablo(i, 10), "Facturé", ""))
    resu(i, 1) = x & IIf(d.exists(x & tablo(i, 11) & tablo(i, 2)), " Facturé", "")
Next i
'---restitution---
Application.EnableEvents = False 'désactive les évènements
P(1, 10).Resize(i - 1) = resu
Application.EnableEvents = True 'réactive les évènements
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Worksheet_Activate 'lance la macro
End Sub
A+
 

Pièces jointes

Bonjour Gérard 🙂
Waooo !!! toujours là pour moi, je me sens très "obligé" car c'est en grande partie grâce à toi que je peux travailler dans de bonnes conditions avec mes "usine à gaz lol.
Encore merci pour ce code.
Je teste et je reviens,
lionel 🙂
 
Bonjour Gérard, le Fil, le Forum,
Je vous souhaite une belle journée 🙂
@Gérard,
Le fichier test fonctionne mais quand j'importe les infos de mon fichier de travail dans le fichier, ça ne fonctionne plus.
Pour info, dans mon fichier de travail, j'ai plus de 10.000 lignes

Je joins le fichier fichier dans lequel j'ai :
- Importé une ligne (la 1ère) de mon fichier de travail,
- modifié une ligne à la main (la seconde),
Ces deux lignes ne se mettent pas à jour.

ça ne fonctionne plus quand le nom n'est plus celui du fichier test.
Je pense qu'il faudrait que ce soit basé sur la date du RdV et le nom du Prospect :
(Il peut y avoir plusieurs RdVs avec dates et heures identiques pour des Prospects différents)
- feuille Appels date en col B et K
- feuille Facture date en col A et E

Je continue à chercher ...
Merci Gérard 🙂
lionel,
 

Pièces jointes

Dernière édition:
Bonjour Lionel, le forum,

Tu es sans doute mal réveillé ce matin.

Dans ton fichier du post #1 les noms de chaque feuille sont dans une seule colonne.

Alors qu'au post #9 dans la feuille "Facture" les noms modifiés sont le résultat de concaténations.

Ça n'a ni queue ni tête, en l'état je ne modifie pas mon code, fais un fichier cohérent.

A+
 
Bonjour Gérard 🙂

Effectivement et je n'avais pas pensé à ça pour le fichier test : feuille "Facture" les noms modifiés sont le résultat de concaténations.
Bon sang, je ne peux pas faire autrement.
Je vais voir ce que je peux faire,
lionel 🙂
 
Re-Gérard 🙂
Merci pour ce fichier et pour ta patience.
OUI tous les noms de la feuille "Facture" sont le résultat de concaténations.
J'ai testé et ça fonctionne pour 4 lignes.
Je regarde pourquoi ça ne fonctionne pas pour les autres.

Comme la situation réelle contient des infos confidentielles,
Je pourrais, si tu veux bien t'envoyer en MP les éléments :
La facture Excel qui sert à l'importation.
Et ton fichier dans lequel j'ai importé.
🙂
 
- 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
13
Affichages
741
Retour