Bonjour à tous,
Je m'adresse à vous car j'ai un nouveau problème de macro à résoudre : j'ai essayer de créer une macro qui compare les valeurs de la colonne B de la feuille "Transactions par rôle" de mon fichier Excel "Proposition finale données de base version 1" aux valeurs de la colonne B de mon fichier Excel "Donnees_de_base"...
Lorsqu'elle la trouve, elle vient mettre le nom de cette valeur trouvée dans la colonne A de la feuille "Transactions Donnees de base" de mon fichier "Proposition finale données de base" et dans la colonne B de cette même feuille, la valeur correspondante (qui est en fait la valeur texte dans la colonne A de mon fichier "Donnees_de_base")...l'incrémentation venant se faire à partir de la 2ème ligne, la 1ère étant réservée à l'entête de mon tableau...
Voilà pour les infos, j'espère que vous avez réussi à suivre.
J'ai déjà réalisé une macro à partir d'un modèle qui m'avait été proposé pour résoudre un autre problème de recherche (merci bqtr...); mon problème, c'est qu'elle marche pas et je sais pas trop d'où provient mon/mes erreurs vu qu'elle "tourne" mais ne vient pas mettre les valeurs dans ma feuille "Transaction données de base" (elle s'arrête vers la 9ème ligne)...
Voilà à quoi ça ressemble :
Option Explicit
Private Sub CommandButton1_Click()
Dim cell As Range, k As Long, I As Long
Dim Wb2 As Workbook
Dim Ws As Worksheet
Application.ScreenUpdating = False
Application.DisplayStatusBar = True
Application.StatusBar = "Traitement en cours, veuillez patienter..."
Workbooks.Open Filename:=ThisWorkbook.Path & "\Donnees_de_base.xls"
Workbooks("Proposition finale données de base version 1.xls").Activate
Set Wb2 = Workbooks("Donnees_de_base.xls")
Set Ws = Wb2.Sheets("Master Datas")
Sheets("Transactions Données de Base").Range("A2:B" & Sheets("Transactions Données de Base").Range("A65536").End(xlUp).Row + 1) = ""
k = Sheets("Transactions Données de Base").Range("A65536").End(xlUp).Row + 1
For I = 2 To Range("B65536").End(xlUp).Row
For Each cell In Ws.Range("B2:B" & Ws.Range("B65536").End(xlUp).Row)
If Range("B" & I) = cell Then
With Sheets("Transactions Données de Base")
.Cells(k, 1) = Range("B" & I)
.Cells(k, 2) = Ws.Cells(cell.Offset(0, 0).Row, cell.Offset(0, -1).End(xlUp).Column).Value
End With
k = k + 1
Else
I = I + 1
End If
Next
Next
Sheets("Transactions Données de Base").Activate
Application.StatusBar = False
Application.ScreenUpdating = True
End Sub
Mon erreur vient (à priori) du fait que ma macro compare la valeur la ligne 2 de ma feuille 1 à la ligne 2 de ma feuille 2, ligne 3 avec la ligne 3, etc...elle ne balaie pas l'intégralité de la plage et j'aimerai bien comprendre pourquoi...Si quelqu'un peut me donner quelques explications...
En pièce jointe, les 2 fichiers...
Merci par avance...
Je m'adresse à vous car j'ai un nouveau problème de macro à résoudre : j'ai essayer de créer une macro qui compare les valeurs de la colonne B de la feuille "Transactions par rôle" de mon fichier Excel "Proposition finale données de base version 1" aux valeurs de la colonne B de mon fichier Excel "Donnees_de_base"...
Lorsqu'elle la trouve, elle vient mettre le nom de cette valeur trouvée dans la colonne A de la feuille "Transactions Donnees de base" de mon fichier "Proposition finale données de base" et dans la colonne B de cette même feuille, la valeur correspondante (qui est en fait la valeur texte dans la colonne A de mon fichier "Donnees_de_base")...l'incrémentation venant se faire à partir de la 2ème ligne, la 1ère étant réservée à l'entête de mon tableau...
Voilà pour les infos, j'espère que vous avez réussi à suivre.
J'ai déjà réalisé une macro à partir d'un modèle qui m'avait été proposé pour résoudre un autre problème de recherche (merci bqtr...); mon problème, c'est qu'elle marche pas et je sais pas trop d'où provient mon/mes erreurs vu qu'elle "tourne" mais ne vient pas mettre les valeurs dans ma feuille "Transaction données de base" (elle s'arrête vers la 9ème ligne)...
Voilà à quoi ça ressemble :
Option Explicit
Private Sub CommandButton1_Click()
Dim cell As Range, k As Long, I As Long
Dim Wb2 As Workbook
Dim Ws As Worksheet
Application.ScreenUpdating = False
Application.DisplayStatusBar = True
Application.StatusBar = "Traitement en cours, veuillez patienter..."
Workbooks.Open Filename:=ThisWorkbook.Path & "\Donnees_de_base.xls"
Workbooks("Proposition finale données de base version 1.xls").Activate
Set Wb2 = Workbooks("Donnees_de_base.xls")
Set Ws = Wb2.Sheets("Master Datas")
Sheets("Transactions Données de Base").Range("A2:B" & Sheets("Transactions Données de Base").Range("A65536").End(xlUp).Row + 1) = ""
k = Sheets("Transactions Données de Base").Range("A65536").End(xlUp).Row + 1
For I = 2 To Range("B65536").End(xlUp).Row
For Each cell In Ws.Range("B2:B" & Ws.Range("B65536").End(xlUp).Row)
If Range("B" & I) = cell Then
With Sheets("Transactions Données de Base")
.Cells(k, 1) = Range("B" & I)
.Cells(k, 2) = Ws.Cells(cell.Offset(0, 0).Row, cell.Offset(0, -1).End(xlUp).Column).Value
End With
k = k + 1
Else
I = I + 1
End If
Next
Next
Sheets("Transactions Données de Base").Activate
Application.StatusBar = False
Application.ScreenUpdating = True
End Sub
Mon erreur vient (à priori) du fait que ma macro compare la valeur la ligne 2 de ma feuille 1 à la ligne 2 de ma feuille 2, ligne 3 avec la ligne 3, etc...elle ne balaie pas l'intégralité de la plage et j'aimerai bien comprendre pourquoi...Si quelqu'un peut me donner quelques explications...
En pièce jointe, les 2 fichiers...
Merci par avance...