Macro qui retourne des données en colonnes

  • Initiateur de la discussion Initiateur de la discussion josanche
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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 🙂
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
177
Réponses
3
Affichages
115
Réponses
3
Affichages
665
Retour