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

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")
 
Re vgendron :)
Evidemment te formule fonctionne nickel.
Mais dans mon fichier de travail, je ne peux pas mettre de formules dans la feuille "Appels"
Il me faut passer par une boucle à partir de la feuille "Facture"
lionel :)
 
Dernière édition:
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é.
 
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.
 
Notre forum d’entraide est 100 % gratuit et le restera.
Aucune formation payante, aucun fichier à acheter, rien à vendre. Mais comme tout site, nous devons couvrir nos frais pour continuer à vous accompagner.
Soutenez-nous en souscrivant à un compte membre : c’est rapide, vous choisissez simplement votre niveau de soutien et le tour est joué.

Je soutiens la communauté et j’accède à mon compte membre

Discussions similaires

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