Macro qui retourne des données en colonnes

josanche

XLDnaute Occasionnel
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
 

Pièces jointes

  • Echantillon final.xlsx
    143.5 KB · Affichages: 55
  • Echantillon final.xlsx
    143.5 KB · Affichages: 59
  • Echantillon final.xlsx
    143.5 KB · Affichages: 63

tdenfert

XLDnaute Impliqué
Re : Macro qui retourne des données en colonnes

Bonjour,

Dans la feuilles Dummie qui doit être remplies pourquoi la ligne 1995 Alabama est répétée 5 fois d'autres 4 ou 1 ???
Peut ont proposée une solution avec des formules?
 

josanche

XLDnaute Occasionnel
Re : Macro qui retourne des données en colonnes

C'est tout à fait normal ! Il se peut que plusieurs lignes répetent la meme année ET le meme ETAT en meme temps coinjointement ! Oui pourquoi pas si la formule marche ben oui :)
 

josanche

XLDnaute Occasionnel
Re : Macro qui retourne des données en colonnes

J'ai vite regarder et il me semblerait que c'est ok ! merci

Toutefois, je pourrais avoir un compte rendu sur mon macro, pour voir si ca marche ?
 
Dernière édition:

Discussions similaires

Réponses
5
Affichages
198

Statistiques des forums

Discussions
312 338
Messages
2 087 397
Membres
103 535
dernier inscrit
moimeme1