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

Microsoft 365 boucle difficile pour moi

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
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

  • fact_maj_test.xlsm
    42 KB · Affichages: 9
Dernière édition:

job75

XLDnaute Barbatruc
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

  • fact_maj_test(1).xlsm
    52 KB · Affichages: 4

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
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

  • fact_maj_Gerard.xlsm
    54.1 KB · Affichages: 2
Dernière édition:

job75

XLDnaute Barbatruc
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+
 

job75

XLDnaute Barbatruc
Si tous les noms de la feuille "Facture" sont le résultat de concaténations tu peux utiliser le fichier joint.
 

Pièces jointes

  • fact_maj_Gerard(1).xlsm
    53.4 KB · Affichages: 5

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
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é.
 

job75

XLDnaute Barbatruc
C'est simple : si ça ne fonctionne pas pour toutes les lignes c'est que les noms ou les dates sont erronés.

Note que la casse ou les espaces superflus n'ont pas d'importance.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…