trouver incohérence dans colonne

polyteis

XLDnaute Occasionnel
Bonjour,

j'ai besoin d'un petit coup de main.
j'ai placé en pièce jointe mon fichier , les explications de ma demande sont décrites dans le cadre texte.
Pour faire simple j'ai besoin d'une macro lancée par un bouton dont le rôle est de me trouver :
- dans une colonne des incohérences sur un code , la ligne contenant l'incohérence est copié dans un autre feuillet
- idem mais en rapport avec 2 colonnes, a ligne contenant l'incohérence est copié dans un autre feuillet

merci de votre participation
 

Pièces jointes

  • essai.xlsx
    14.1 KB · Affichages: 67
  • essai.xlsx
    14.1 KB · Affichages: 72
  • essai.xlsx
    14.1 KB · Affichages: 74

pierrejean

XLDnaute Barbatruc
Re : trouver incohérence dans colonne

Re

Vois si cela te convient

NB: 1) Teste sur un échantillon de quelques dizaines de ligne et arme toi de patience pour les 150000
2) Je n'utilise que les colonnes R et S
 

Pièces jointes

  • essai (3).xlsm
    25.1 KB · Affichages: 53
  • essai (3).xlsm
    25.1 KB · Affichages: 51
  • essai (3).xlsm
    25.1 KB · Affichages: 49

polyteis

XLDnaute Occasionnel
Re : trouver incohérence dans colonne

re bonjour
il me semble que cela fonctionne , je teste sur 1244 lignes
les comptes PCE spécifiques ne devant pas être employé autrement qu'avec le binôme imposé sont identifiés et la ligne s'inscrit, j'ai vu que tu fais ecrire dans les 2 onglets.
pour ce test cela doit s'inscrire seulement dans l onglet CIB1 ;

L'onglet cib, sert à recevoir les résultats sur l'emploie exclusif des code contenu dans colonne U

superbe boulot
merci encore
je continue à tester
merci
 

pierrejean

XLDnaute Barbatruc
Re : trouver incohérence dans colonne

Re

Voila pourquoi j'ai ecrit dans la feuille Cib
"si dans la colonne D je trouve un code différent de ceux énumérés dans la colonne U
je vais copier cette ligne dans l'onglet cib à partir de la ligne 12"
J'ai par ailleurs supposé que dans la colonne R tous les Codes activités CHORUS figuraient (si tel n'est pas le cas il suffit de rajouter les absents )
 

polyteis

XLDnaute Occasionnel
Re : trouver incohérence dans colonne

Re

je me suis sans doute mal expliqué.

1) les seuls codes pouvant existés sont ceux de la colonne U, d'ou l'importance de voir si quelqu un utilise des codes anciens.
Tous les codes de la colonne R sont obligatoirement dans la colonne U.
2) seuls les codes PCE ce la colonne S peuvent être employé avec sont duo en colonne R
exemple le PCE/6151000000 ne peut être utilisé qu'avec le code activité 0178160109B1

c'est pourquoi j'ai 2 onglets
- un pour voir les codes activités qui sont faux donc différents de la liste en colonne U
- l'autre pour déceler les duos érronés

encore merci de te pencher sur ce problème
 

polyteis

XLDnaute Occasionnel
Re : trouver incohérence dans colonne

Re bonjour,

je m'aperçois que je suis vraiment pas clair dans mes explications,
aussi je renvois un fichier , avec 8 lignes à tester, et les attendus et le raisonnement.

j'espère par ce biais, bien me faire comprendre dans ma demande

merci et encore merci
 

Pièces jointes

  • test essai.xlsm
    29.2 KB · Affichages: 60
  • test essai.xlsm
    29.2 KB · Affichages: 60
  • test essai.xlsm
    29.2 KB · Affichages: 67

polyteis

XLDnaute Occasionnel
Re : trouver incohérence dans colonne

RE

ta fonction détecte bien les activités chorus (fausses) et inscrit la ligne contenant l'erreur dans l'ongletCIB.
En revanche il y a un souci avec l'autre test,
j'ai copié l'ensemble des données contenues en colonnes R et S, en colonne D et E puis j'ai généré 2 erreurs sur code activté chorus sur les lignes ref 17 et 34 en faussant le code CHORUS 0178160109A1 en 0178160109Z1 et 0178160109B1 en 0178160109W1
résultat : il trouve bien les 2 codes erronnés et remplit le CIB, on trouve bien incohérence entre activité CHORUS et PCE, mais là il double les lignes quid !!!!!!

merci
 

polyteis

XLDnaute Occasionnel
Re : trouver incohérence dans colonne

cela fonctionne correctement il me semble,
j'obtiens ce que je t'ai demandé

peux tu rajouter en début de prog , une ligne dont le rôle est d'effacer les anciens résultats du traitement dans les onglets CIB et CIB1
 

laetitia90

XLDnaute Barbatruc
Re : trouver incohérence dans colonne

bonjour polyteis ,pierrejean:):):)

sur 150000 lignes je pense qui faut traiter avec des tablos de A a Z bien plus rapide

pas suivi le post.... mais pour la premiere demande on pourrait faire cela je prends colonne r en fin de compte la meme que colonne u

Code:
Sub es()
 Dim t, t1, t2, m As Object, x As Long, x1 As Long, x2 As Long ', m As Dictionary
 Set m = CreateObject("Scripting.Dictionary")
' Set m = New Dictionary '
 t = Feuil1.Range("a2:h" & Feuil1.Cells(Rows.Count, 4).End(3).Row)
 t2 = Feuil1.Range("r2:s" & Feuil1.Cells(Rows.Count, 18).End(3).Row)
 ReDim t1(1 To UBound(t), 1 To 8)
 For x2 = 1 To UBound(t2)
 If Not m.Exists(t2(x2, 1)) Then m.Item(t2(x2, 1)) = m.Item(t2(x2, 1))
 Next
 For x1 = 1 To UBound(t)
 If Not m.Exists(t(x1, 4)) Then
 x = x + 1
 For c = 1 To 8: t1(x, c) = t(x1, c): Next c
 End If
 Next
 Feuil2.Range("b12").Resize(x, 8) = t1
 Erase t, t1, t2: Set m = Nothing
End Sub

eventuellement utiliser directement Dictionary pour aller encore plus vite

a adapter pour la 2 demande
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 206
Messages
2 086 203
Membres
103 157
dernier inscrit
youma