Comparer 2 colonnes et ressortir une MsgBox
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Je compare deux colonnes, cependant une fois la comparaison faite je voudrai avoir une MsgBox avec seulement ce qui a été modifié.
Est-il possible s'il vous plaît d'avoir un petit coups d'mail ?
Voici le code qui compare les colonnes :
Merci d'avance
Je compare deux colonnes, cependant une fois la comparaison faite je voudrai avoir une MsgBox avec seulement ce qui a été modifié.
Est-il possible s'il vous plaît d'avoir un petit coups d'mail ?
Voici le code qui compare les colonnes :
Option Explicit
' constantes à adapter à ton fichier
' Feuille 1
Const F1 = "Données" ' nom
Const lidebF1 = 2 ' premiere ligne des données
Const coF1 = 1 ' colonne des données
Const coresF1 = 1 ' colonne pour le résultat (en principe ce sera coF1)
' Feuille 2
Const F2 = "Données" ' nom
Const lidebF2 = 2 ' premiere ligne des données
Const coF2 = 4 ' colonne des données
Sub AnalysePing()
'
' AnalysePing Macro
'
'
Workbooks.OpenText Filename:="Chemin\\Ping.txt", Origin:= _
xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=False, _
Comma:=False, Space:=True, Other:=False, FieldInfo:=Array(Array(1, 1), _
Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _
Array(9, 1), Array(10, 1), Array(11, 1)), TrailingMinusNumbers:=True
Range("A3:A144").Select
Selection.Copy
Application.DisplayAlerts = False
Windows("Problèmes.xlsm").Activate
Range("D2:D143").Select
ActiveSheet.Paste
Windows("Ping.txt").Activate
ActiveWindow.Close
Application.DisplayAlerts = True
Dim liF2 As Long, lifinF2 As Long, vF2, liF1 As Long, vF1
With Sheets(F2)
lifinF2 = .Cells(Rows.Count, coF2).End(xlUp).Row
For liF2 = lidebF2 To lifinF2
vF2 = .Cells(liF2, coF2).Value
liF1 = lidebF1 + liF2 - lidebF2
vF1 = Sheets(F1).Cells(liF1, coF1).Value
If vF1 = 1 Then
Sheets(F1).Cells(liF1, coresF1).Value = vF1
Else
Sheets(F1).Cells(liF1, coresF1).Value = vF2
End If
Next liF2
End With
End Sub
Merci d'avance
A voir également:
- Comparer 2 colonnes et ressortir une MsgBox
- Faire 2 colonnes sur word - Guide
- Supercopier 2 - Télécharger - Gestion de fichiers
- Déplacer une colonne excel - Guide
- Classer par ordre alphabétique excel plusieurs colonnes - Guide
- Excel fusionner 2 colonnes nom prénom - Guide
Il y a bien comparaison pourtant via un bouton ! Comme souhaité.
Les colonnes se situe sur la même feuille c'est pour cela.
Ensuite avec une formule ou mise en forme conditionnelle impossible parce que une partie de mes infos se situe dans un fichier texte que j'exporte dans un excel. Pour ensuite faire le comparatif.
J'avais fait une demande ici : https://forums.commentcamarche.net/forum/affich-35502541-comparer-remplacer-vba
Connaissiez-vous un moyen d'afficher les comparaison dans une MsgBox s'il vous plaît ?
Merci d'avance
Je maintiens : ce n'est pas une comparaison où tu exhibes les seules différences entre deux séries de données mais la création d'une troisième série de données à partir de deux séries d'entrée.
En partant sur l'exemple qu'on t'a donné : https://mon-partage.fr/f/0Op1YjMG/
- je suis d'accord que l'import du fichier texte est simplifié par macro ;
- le résultat en colonne G peut être obtenu par macro mais aussi par formule ;
- (3) le code listé dans ce fil modifie la série de données initiale ;
- si (3) est bien ce que tu veux et que tu tiens à afficher une MsgBox, tu peux ajouter
A+
Oui c'est plus ça ;)
Mais ça ne fonctionne pas totalement ^^
Pour que cela soit plus clair voici des fichiers exemples de mon code.
Il y a l'excel avec le code et le fichier texte ou je récupère les données. (Dans le code il faut modifier le chemin du fichier PingResults.txt selon votre emplacement)
https://mon-partage.fr/f/FCJpHTz1/
https://mon-partage.fr/f/GTOUWV3U/
Mon Objectifs est d'afficher dans un MsgBox la colonne B (SITEx) mais seulement pour les lignes ayant changé.
Est-ce que cela est plus clair ? (Pas forcement simple à expliquer)
Merci d'avance
SI j'ai bien compris, ceci peut faire l'affaire... même si je ne vois pas l'intérêt de remplacer les valeurs en colonne A.
Option Explicit ' constantes à adapter à ton fichier ' Colonne 1 Const F1 = "Feuil1" ' nom Const lidebF1 = 1 ' premiere ligne des données Const coF1 = 1 ' colonne des données Const coresF1 = 1 ' colonne pour le résultat (en principe ce sera coF1) ' Colonne D Const F2 = "Feuil1" ' nom Const lidebF2 = 1 ' premiere ligne des données Const coF2 = 4 ' colonne des données Sub AnalysePing() ' ' AnalysePing Macro ' ' 'CHEMIN FICHIER PingResults.txt à changer Workbooks.OpenText Filename:=ActiveWorkbook.Path & "\PingResults.txt", Origin:= _ xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _ xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=False, _ Comma:=False, Space:=True, Other:=False, FieldInfo:=Array(Array(1, 1), _ Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _ Array(9, 1), Array(10, 1), Array(11, 1)), TrailingMinusNumbers:=True Range("A3:A13").Select Selection.Copy Application.DisplayAlerts = False Windows("TEST.xlsm").Activate Range("D1:D10").Select ActiveSheet.Paste Windows("PingResults.txt").Activate ActiveWindow.Close Application.DisplayAlerts = True Dim liF2 As Long, lifinF2 As Long, vF2, liF1 As Long, vF1, msgsites As String With Sheets(F2) lifinF2 = .Cells(Rows.Count, coF2).End(xlUp).Row For liF2 = lidebF2 To lifinF2 vF2 = .Cells(liF2, coF2).Value liF1 = lidebF1 + liF2 - lidebF2 vF1 = Sheets(F1).Cells(liF1, coF1).Value If vF1 = 1 Then Sheets(F1).Cells(liF1, coresF1).Value = vF1 Else Sheets(F1).Cells(liF1, coresF1).Value = vF2 If vF1 <> vF2 Then msgsites = msgsites & Sheets(F1).Cells(liF1, coresF1 + 1).Value & ":" & vF1 & "-->" & vF2 & Chr(10) End If Next liF2 MsgBox msgsites End With End SubC'est exactement ça !!
Merci de votre aide ;)