Procédure de recherche par code VBA

Bonjour,

Je suis à la recherche d'un code vba me permettant de remplir autmatiquement des cellules. Je vais tenter de m'expliquer par rapport au fichier joint :

sur l'onglet "Feuil1" se trouve différentes colonnes avec des renseignements. J'ai actuellement créé un code pour déclencher une action en double cliquant sur certaines cellules. Ce code n'est actif pour le moment que sur les cellules de la colonne AJ. En double cliquant dessus cela ouvre le second onglet "CUI" avec certains champs qui se remplissent : Nom de l'EVS, Nom de l'enfant, Ecole et Nbre d'heures.

Je souhaite que lors de cette ouverture, la seconde ligne devrait se remplir si le nom indiqué dans la cellule C12 (nom de l'EVS) est retrouvé dans une case de la colonne AJ ou AN du premier onglet (Feuil1).

En fait cela permet de savoir quels sont les élèves qui sont avec l'EVS.

J'ai renseigné dans le tableau un exemple avec CAA qui est avec CA et LS.

J'espère être assez clair, n'hésitez pas à me poser des questions au besoin.

Merci d'avance

19diplomeauto.xlsm (175.54 Ko)

Bonjour,

Je souhaite que lors de cette ouverture, la seconde ligne devrait se remplir si le nom indiqué dans la cellule C12 (nom de l'EVS) est retrouvé dans une case de la colonne AJ ou AN du premier onglet (Feuil1).

En lisant la demande, pas sur d'avoir compris.

La seconde ligne ... il s'agit de E14, F14 et G14 ??

Exemple, double clique en AJ5 de la feuil1, cela renvoie les données de D5 etc... dans la feuille CUI. Que doit-on trouver en ligne 14 de cette feuil1 ?

Sinon beau fichier mais attention aux cellules fusionnées et aux objets (case à cocher) dans les feuilles. A éviter lorsque l'on fait de la programmation VBA. Cela fait plus joli, mais il arrive toujours un problème.

Crdlt

désolé d'être confus.

sur AJ5 ça ne fonctionne pas dans cet exemple.

Prenons un double click sur AJ4 (CAA). A ce moment là :

_ en ligne 12 de CUI s'affiche --> CA/CLG PABLO NERUDA BEGLES/15

_ en ligne 14 de CUI devrait s'afficher --> LS/EEPU GAMBETTA BEGLES/15

(nous retrouvons CAA à deux endroits du tableau, je souhaiterais que cela apparaisse dans l'onglet CUI lorsque je duble clique dessus)

re

Remplacez le code dans la feuil1 par celui ci-après

Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim derLn As Integer, ln As Integer
derLn = Range("AJ" & Rows.Count).End(xlUp).Row
If Not Application.Intersect(Target, Range("AJ1:AJ" & derLn)) Is Nothing And Target <> "" Then
ln = Range("AN1:AN" & derLn).Find(Target.Value, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True).Row
    With Sheets("CUI")
        .Range("C12") = Range("AJ" & Target.Row)
        .Range("E12") = Range("D" & Target.Row)
        .Range("F12") = Range("BA" & Target.Row)
        .Range("G12") = Range("AK" & Target.Row)
        If ln > 0 Then
            '.Range("C14") = Range("AJ" & ln)
            .Range("E14") = Range("D" & ln)
            .Range("F14") = Range("BA" & ln)
            .Range("G14") = Range("AK" & ln)
        End If
        .Activate
    End With
    End If
End Sub

Le remplissage de C14 est désactivé puisque la cellule est fusionnée et dans ce cas la deuxième partie du code écraserait la donnée actuelle.

Si ok, merci de clôturer le fil en cliquant sur le V vert à coté du bouton EDITER lors de votre réponse

Crdlt

Super ça avance au top.

Mais ça ne fonctionne pas avec tout apparemment, j'ai remis le fichier en pièce jointe avec ce nouveau code et j'ai enlever les cellules fusionnées :

_ si je double clic sur AJ2 (AVS 01), cela marche nickel

_ si je double clic sur AJ3 (AVS 02), cela marche bien mais cela me laisse sur la feuille CUI les données en deuxième ligne d'AVS 01 (quand je fais un double clic sur AJ2), est-il possible de "vider" les champs de l'onglet CUI à chaque double clic sur Feuil1

_ si je double clic sur AJ4, AJ5 ... cela me met "erreur d'exécution 91"

--> sur AJ4, cela doit récupérer la ligne 4 et la ligne 5 (AVS 04)

--> sur AJ5, cela doit se lancer comme pour AJ3 (AVS 02)

Petite question subsidiaire : est-il possible que les cellules A2 et B2 de l'onglet CUI puissent se remplir automatiquement ? Actuellement il faut double cliquer dessus pour que cela mette la date et l'heure du moment.

12diplomeauto.xlsm (169.20 Ko)

re,

-> sur AJ5, cela doit se lancer comme pour AJ3 (AVS 02)

Sur AJ5, il y a AVS5 qui n'est pas trouvé ni en en AN ou en AJ. J'en déduit que la ligne 13 en feuille CUI ne doit rien avoir comme info. Juste ?

Une question aussi, se peut-il que l'on trouve l'info 3 fois ? Exemple : en ligne 4 et 5 colonne AJ, on AVS04. Est-il possible de trouver AVS04 aussi en colonne AN ou dans une autre ligne de la colonne AJ. En gros on aurait 3 AVS04. Si oui cela pose un souci au niveau de la feuille CUI quine comporte que deux lignes (12 et 13)

Crdlt

Pour AJ5 :

en fait NOM 3 PRENOM 3 et NOM 4 PRENOM 4 sont tous les deux avec AVS 04. Donc la feuille en CUI doit comporter ces deux personnes.

AVS 05 n'intervenant que pour NOM 5 PRENOM 5 dans mon exemple de tableau.

Effectivement il peut se trouver que AVS se retrouve sur 3 personnes. Je rajoute la ligne dans mon fichier joint.

10diplomeauto.xlsm (172.22 Ko)

Re

Ok mais là se pose une autre question, combien de fois peut-on avoir la même info à récupérer. 3 x fois maximum ou plus

Il faut prévoir cela avant de faire le code. Si ce n'est pas déterminé, il faudra que le code prévoit l'ajout des lignes dans la cellules CUI au préalable

Merci de votre info avant de continuer

Crdlt

normalement 4 fois serait le maximum.

merci pour l'aide

Re

Ok alors il vaut mieux que le document final soit préparé à l'avance. Possible cela ?

Crdlt

Qu'entends-tu par préparer le document final ?

C'est tout à fait possible

Re,

Qu'entends-tu par préparer le document final ?

Faire en sorte que la feuille CUI soit prêt à recevoir les informations pour 4 fois

Crdlt

Edit Dan :

Vois le fichier joint. Double clique dans la colonne AJ ou AN pour voir la feuille CUI complétée

Toutefois, évite les case à cocher. Les objets et leur gestion apportent trop souvent des problèmes. Mets plutôt une croix dans une cellule par exemple

Si ok, clique sur le V vert à coté du bouton EDITER pour clôturer le fil

Crdlt

10diplomeauto-2.xlsm (169.64 Ko)

Merci beaucoup Dan.

Deux choses encore si c'est possible :

sur le fichier que tu m'as envoyé, lorsque je teste AVS01, cela m'affiche bien les 4 enfants concernés mais le nombre d'heures n'est pas le bon (HE dans Feuil1).

Je joins le fichier que j'ai voulu continué à faire progresser. en fait ces double-clics vont être effectué sur différents types de supports. Cela correspond aux différentes couleurs de la Feuil1 de la colonne N à AW : violet pour AESHi, orange pour AESHm, bleu pour AVS et vert pour AVS D.

J'ai créé les feuilles de sortie sur le modèle de CUI. J'ai pensé très basiquement qu'en ajoutant à ton code l'équivalent pour les autres cela fonctionnerait, mais cela n'est vrai qu'en partie. (je ne l'ai fais que pour AESHi et CUI) : quand je double clic sur les colonnes bleues (pour CUI donc), cela renseigne bien CUI mais cela m'ouvre AESHi. quand je double clic sur les colonnes violettes (AESHi), cela ne fonctionne que pour l'exemple MMA.

Désolé de ne pas avoir précisé auparavant que je souhaitais étendre les fonctions de ce code.

Merci d'avance

Re

Pour les heures correctes, change cette ligne dans le code

.Range("G" & ln) = Range("AK" & cel.Row)

et remplace la par ceci :

.Range("G" & ln) = cel.Offset(0, 1) 

Pour la deuxième demande, cela devient plus complexe là.... je regarde cela

Crdlt

Merci Dan,

Désolé de répondre si tard mais j'étais en déplacement.

Merci d'avance de regarder pour la suite

Re

Vois le fichier qui devrait correspondre à ce que tu attends.

Au vu de ton dernier courrier j'ai du revoir le code complet

Si ok, veille à clôturer le fil lors de ta réponse

Crdlt

Un très grand merci, ça fonctionne super bien

Rechercher des sujets similaires à "procedure recherche code vba"