Aide pour adaptation de code

  • Initiateur de la discussion Initiateur de la discussion ZeDave
  • 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 !

Z

ZeDave

Guest
Bonjour Forum !

J'aimerais adapter un code écrit par Maestro Boisgontier ci après :
Code:
Fonction Rechv()

Function rechv(champ As Range, cles As Range, valeurs As Range)
 a = cles
 b = valeurs
 c = champ
 Dim d()
 Set mondico = CreateObject("Scripting.Dictionary")
 For i = 1 To cles.Count
   mondico.Add a(i, 1), b(i, 1)
 Next i
 ReDim d(1 To champ.Count)
 For i = 1 To champ.Count
    d(i) = mondico.item(c(i, 1))
 Next i
 rechv = Application.Transpose(d)
End Function

Sub essai()
 
 [B2:B1000] = rechv([a2:a1000], [Noms], [Prenoms])
 [c2:c1000] = rechv([a2:a1000], [Noms], [Ages])

End Sub

En fait je souhaiterais récupérer les infos des 14 colonnes d'un onglets1 sur l'onglet2 sur lequel j'ai ma colonne "clés" en A.

j'ai bien essayé ça :
Code:
Sub essai()

With Sheets("onglet2")
[B2:B1000] = rechv([a2:a1000], Sheets("onglet1").Columns("A:A"), Sheets("onglet1").Columns("B:B"))
[c2:c1000] = rechv([a2:a1000], Sheets("onglet1").Columns("A:A"), Sheets("onglet1").Columns("C:C"))
[d2:d1000] =  rechv([a2:a1000], Sheets("onglet1").Columns("A:A"), Sheets("onglet1").Columns("D:D"))
[e2:e1000] =  rechv([a2:a1000], Sheets("onglet1").Columns("A:A"), Sheets("onglet1").Columns("E:E"))
[f2:f1000] =  rechv([a2:a1000], Sheets("onglet1").Columns("A:A"), Sheets("onglet1").Columns("F:F"))
etc....

End With
End Sub

mais ça marche po ! Quelqu'un pourrait me donner une piste pour traiter le problème ?

Merci par avance
 
Re : Aide pour adaptation de code

Bon j'avance à petit pas.
J'ai déterminé que la fonction est très bien comme elle est.
c'est mon Sub() qui pose problème. je l'ai modifié par :
Code:
Sub essai()
 
[B2:B100] = rechv([a2:a100], Sheets("onglet1").Range("A2:A100"), Sheets("onglet1").Range("b2:b100"))
[c2:c100] = rechv([a2:a100], Sheets("onglet1").Range("A2:A100"), Sheets("onglet1").Range("c2:c100"))
[d2:d100] = rechv([a2:a100], Sheets("onglet1").Range("A2:A100"), Sheets("onglet1").Range("d2:d100"))
[e2:e100] = rechv([a2:a100], Sheets("onglet1").Range("A2:A100"), Sheets("onglet1").Range("e2:e100"))
End Sub
le problème vient aussi des plages de cellules qui pour cet exemple est fixé à 100 lignes.
Si dans mon onglet1 je n'ai que 90 lignes de données, pouf le message d'erreur suivant s'affiche :
"Cette clé est déjà associé à un élément de cette collection".

Comment contourner ce problème ?

Merci par avance pour vos lumières.
 
Re : Aide pour adaptation de code

Aide de toi le ciel t'aidera ! hihi.😀

Comme quoi ça sert de poser des questions ! ça force à réfléchir à ce que l'on va demander du coup la réponse est apparu au milieu du désert.

Pour ceux que cela intéresse, il suffisait de passer par un activesheet.usedrange.rows.count. pour chaque Range

Tcho les forumeurs
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
906
Réponses
15
Affichages
775
Réponses
4
Affichages
754
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Réponses
10
Affichages
789
Retour