RechercheV sur plusieurs colonne
Bonjour/bonsoir et bonne année !
J'ai encore besoin de votre aide ! Le fichier Excel sera plus parler pour l'explication mais je cherche à faire une sorte de rechercheV mais ou le résultats peux être dans plusieurs colonnes. en fonction de l'instrument et du nom de l'élèves, il va dans le récapitulatif de chaque professeur dans chaque onglet. je précise que les créneaux sont ajouté manuellement ( s'il est possible de faire une liste déroulante en fonction de la case d'avant (pas déroulante) je suis preneur ! ) ainsi que les coordonnées dans élèves dans l'onglet créneaux. Et ils sont aussi mis manuellement dans les tableaux, j'avais réussi quelque chose mais ça ne fonctionne de nouveau plus donc je verrais plus tard quand j'aurais le temps, cette année je ferais comme çà !
Merci d'avance pour votre aide.
Rémi
Bonjour Rémi,
Qu'elle est votre version Excel à indiquée dans votre profil SVP ?
A+
Bonjour et merci pour votre réponse,
Je n'y connais vraiment rien en macros ! Comment je peux l'adapter sur un autre fichier ? ou est la ligne qui indique ou dois apparaître le résultats ?
Bonjour, Une base de données avec tous les créneaux.
Pas besoin de faire ensuite 12000 onglets ; les tableaux croisés sont là pour çà et celà s'actualise bien plus facilement en cas de changement sur l'onglet principal.
Option Explicit
Public i As Long, sh As Worksheet 'declaration dex variables en public pour qu'elles soient accessible dans les 2 macros
Sub Transfert() 'si f, h ou i non vide affectation du nom de la feuille (idem à l'instrument)et lancement de la macro remplir
For i = 2 To Range("B" & Rows.Count).End(xlUp).Row 'boucle sur toutes les lignes
If Range("F" & i).Value <> "" Then Set sh = Sheets(Range("F" & i).Value): remplir
If Range("H" & i).Value <> "" Then Set sh = Sheets(Range("H" & i).Value): remplir
If Range("J" & i).Value <> "" Then Set sh = Sheets(Range("J" & i).Value): remplir
Next
MsgBox ("Transfert terminé")
End Sub
Sub remplir()
Dim lig As Long, j As Byte, k As Long 'declaration des variables locales
lig = sh.Range("B" & Rows.Count).End(xlUp).Row + 1 'dernière ligne + 1
For k = 2 To lig 'contrôle si nom déjà saisie
If sh.Range("B" & k).Value = Range("B" & i).Value And sh.Range("C" & k).Value = Range("C" & i).Value Then
For j = 2 To 5 'si oui mise à jour des données(ici les colonnes 2 à 5 à l'aide d'une boucle)
sh.Cells(k, j).Value = Cells(i, j).Value
Next 'pour la colonne 6 tout dépend de la colonne concernée
If Range("F" & i).Value = sh.Name Then sh.Range("F" & k).Value = Range("G" & i).Value
If Range("H" & i).Value = sh.Name Then sh.Range("F" & k).Value = Range("I" & i).Value
If Range("J" & i).Value = sh.Name Then sh.Range("F" & k).Value = Range("K" & i).Value
Exit Sub
End If
Next
For j = 2 To 5 'sinon ajout des données
sh.Cells(lig, j).Value = Sheets("crénneaux").Cells(i, j).Value
Next
If Range("F" & i).Value = sh.Name Then sh.Range("F" & lig).Value = Range("G" & i).Value
If Range("H" & i).Value = sh.Name Then sh.Range("F" & lig).Value = Range("I" & i).Value
If Range("J" & i).Value = sh.Name Then sh.Range("F" & lig).Value = Range("K" & i).Value
End Subpour utiliser ces macros dans un autre fichier faire glisser le module 1 dans le nouveau fichier
Ajouter un bouton (ou une forme(comme dans l'esemple)) et lui affecter la macro transfert
dans la macro transfert on choisi la feuille (qui a le même nom que l'instrument)
et dans la macro remplir on affecte à la feuille concernée les données correspondantes
A+ François
Je suis désolé, je n'ai pas compris ! Comment je fais glisser le module 1 dans le nouveau fichier ? et la fin non plus je ne comprends pas ! Je m'en excuse ! Je ne comprends pas aussi la macro en elle-même. Comment le logiciel comprends où dois aller le texte ?
Je vous remercie pour votre aide, si je n'y arrive pas encore, je laisserai tomber, j'ai pris trop de temps pour le faire. Comme j'ai dis à mon entretien annuel "je perds du temps à vouloir en gagner !"
Bonne soirée
Rémi