Macro qui retourne des données en colonnes

Bonjour à tous,

Après avoir travaillé sur la rédaction d'un macro, j'aimerais que vous me corrigier pour avoir le résultat voulu si c'est possible.

Ma demande est la suivante, j'aimerais classer les données se situant dans les feuilles Crime, Gunproduction et Education qui sont classés par Year (Année) et par State (Etat) DANS la feuille Dummies en fonction des années ET etat proposés.

Exemple: Dans la feuille dummies, pour la ligne 5, on a 1995 en colonne A et Alabama en colonne B et je voudrais que grace à un macro, la valeur 26894 soit retournée dans la ligne 5 de la colonne crime ainsi que 17,3 dans la colonne Education et rien (cellule vide) dans la colonne Gunproduction car il n'y a pas de donnée cette année en gunproduction.

Voici ma fonction macro que j'ai crée pour résoudre ce problème. Pouvez-vous svp la corriger en fonction de ma demande et si possible ajouter un commandbutton sur la feuille Dummies ? Ca serait hyper gentil

Si vous avez besoin d'aide quelconque dites le moi ou si ma demande est trop difficile ou pas possible à répondre dite le moi aussi

EN pièce jointe, vous avez le fichier excel alégé à 143ko (maximum 5 colonnes dans la feuille Dummies)

Merci d'avance

Sub classer()

Dim i&, a&, x&, aa As Variant, bb As Variant, cc As Variant, dd As Variant, t$

aa = Sheets("Dummies").Range("A2:CO" & Sheets("Dummies").Range("A" & Rows.Count).End(xlUp).Row)

bb = Sheets("Crime").Range("A2:V" & Sheets("Crime").Range("A" & Rows.Count).End(xlUp).Row)

cc = Sheets("Education").Range("A2:X" & Sheets("Education").Range("A" & Rows.Count).End(xlUp).Row)

dd = Sheets("Gunproduction").Range("A2:X" & Sheets("Gunproduction").Range("A" & Rows.Count).End(xlUp).Row)

t = Timer

Feuil2.Range("A2:CO" & Feuil2.Range("A" & Rows.Count).End(xlUp).Row).ClearContents

For i = 1 To UBound(aa)

For a = 1 To UBound(bb)

If aa(i, 1) = "" Then GoTo 1

If aa(i, 1) = bb(1, i) And aa(i, 2) = bb(i, 1) Then

aa(i, 3) = bb(a, 2)

End If

Next a

For x = 1 To UBound(cc)

If aa(x, 1) = cc(1, x) And aa(x, 2) = cc(x, 1) Then

aa(x, 3) = cc(a, 2)

End If

Next x

For k = 1 To UBound(dd)

If aa(k, 1) = dd(1, x) And aa(k, 2) = dd(k, 1) Then

aa(k, 3) = dd(a, 2)

End If

Next k

1 Next i

Feuil2.Range("A2").Resize(UBound(aa), UBound(aa, 2)) = aa

Feuil2.Columns("S:T").AutoFit

MsgBox "Traitement effectué en " & Format(Timer - t, "0.00 S")

End Sub

Euh, par le plus grand des hasards, je crois que je viens de répondre à ton autre demande sur ton autre fil

A te relire.

Coucou à vous,

J'ai reposté un message en ciblant davantage ma demande et en compactant le fichier au maximum et en changeant la colonne des années ! J'essayais de faire du VBA .

Rechercher des sujets similaires à "macro qui retourne donnees colonnes"