VBA correspondance de 2 colones avec des cellules vides
Bonjour à tous,
j'ai une macro pour chercher une valeurs dans une colonne et rapporter la ligne correspondante
Option Explicit
Sub Remplir()
Dim i As Integer
For i = 1 To 50
Dim i2 As Integer
For i2 = 2 To 98
If Feuil1.Cells(i, "A") = Feuil2.Cells(i2, "A") Then
Dim y As Integer
For y = 2 To 92
Feuil1.Cells(i, y) = Feuil2.Cells(i2, y)
Next
End If
Next
Next
Je voudrais maintenant pouvoir faire exactement la même chose mais en comparant les valeurs de 2 colonnes
Je précise que certaines cellules sont vides.
J'ai tenté ça mais je suis vraiment pas sûr de moi et ça ne fonctionne pas
Option Explicit
Sub Remplir()
Dim i As Integer
For i = A1 To B50
Dim i2 As Integer
For i2 = A1 To B95
If Feuil1.Cells(i, "A") = Feuil2.Cells(i2, "A") And Feuil1.Cells(i, "B") = Feuil2.Cells(i2, "B") Then
Dim y As Integer
For y = 3 To 68
Feuil1.Cells(i, y) = Feuil2.Cells(i2, y)
Next
End If
Je vous remercie d'avance du temps que vous prendrez pour me lire
Bonne soirée
Bonjour
Tu devrais joindre ton fichier, même simplifié...
Bye !
Ci-joint un fichier simplifié
j'aurais du y penser !
Merci
Bonjour Bast34,
Ma présente réponse est d'après ton 1er message.
J'ai réécrit ainsi ton 1er code VBA :
Option Explicit
Sub Remplir()
Dim i&, i2&, y%
Worksheets("Feuil1").Select: Application.ScreenUpdating = False
With Worksheets("Feuil2")
For i = 1 To 50
For i2 = 2 To 98
If Cells(i, "A") = .Cells(i2, "A") Then
For y = 2 To 92
Cells(i, y) = .Cells(i2, y)
Next y
End If
Next i2
Next i
End With
End SubJ'ai réécrit ainsi ton 2ème code VBA :
Option Explicit
Sub Remplir()
Dim i&, i2&, y%
Worksheets("Feuil1").Select: Application.ScreenUpdating = False
With Worksheets("Feuil2")
For i = 1 To 50
For i2 = 1 To 95
If Cells(i, "A") = .Cells(i2, "A") And Cells(i, "B") = .Cells(i2, "B") Then
For y = 3 To 68
If .Cells(i2, y) <> "" Then Cells(i, y) = .Cells(i2, y)
Next y
End If
Next i2
Next i
End With
End SubCordialement,
dhany
Merci 1000 fois Dhanny
Je crois que j'ai réussi à faire fonctionner tout comme il faut
je vérifierai ça demain
Il faut absolument que j'apprenne à m'en sortir avec ces macros.
Merci encore et bonne soirée
Bonjour Bast34,
Merci ... pour tes 1000 remerciements.
Je te retourne ton fichier modifié :
⚠ Tu avais mis ton code VBA dans ThisWorkbook au lieu de le mettre dans Module1 ; j'ai donc créé ce module, puis j'y ai coupé / collé tout ton code VBA ; quand on met dans ThisWorkbook un code VBA, c'est pour des procédures événementielles du classeur, ce qui n'est pas le cas ici.
Pour la prochaine fois, voici le moyen le plus simple d'insérer un module (à partir de la fenêtre Microsoft Visual Basic) : Alt i m
J'ai un peu amélioré tes 3 macros, mais difficile d'en faire davantage sans savoir ce que tu veux vraiment faire ; d'autant plus que les données que tu as mises ne sont pas assez représentatives, et pas assez nombreuses ; exemple : ton code utilise une ligne 105 qui est vide alors qu'elle devrait contenir des données !
Sur "Feuil2", lignes occupées : de 1 à 95 ; dessous : plein de lignes vides ... et ta ligne 250 est occupée.
un oubli ? résultat erroné de l'exécution d'un code VBA ?
Chacune des 3 macros est appelée par un bouton placé sur "Feuil1" : ok ; quand ta macro Remplir() appelle ta macro Colorier() : c'est tout à fait possible et correct, mais je ne sais pas si c'est vraiment ce que tu veux ou pas : peut-être que tu as écrit cet appel par mégarde ? ou juste pour un essai temporaire et tu as oublié de l'enlever ensuite ? mais à laisser si tu en as besoin !
Sur "Feuil1" : clique sur le bouton « remplir » ; clique ensuite sur le bouton « reset » : c'est ok ? à confirmer ; sinon : ça sera à adapter.
Un clic sur le bouton « colorier » ne fait rien car les données ne sont pas en adéquation avec ce qu'il faudrait !
Cordialement,
dhany
Merci encore je vais encore faire des essais mais je crois que ça fonctionne,
Effectivement le fichier transmis était peut être trop simplifié ...
Merci
et bonne journée