1: comment peut-on selectionner plusieures donnees dans une meme colonne à partir d'une liste déroulante sans perdre les données saisies au paravant (qui ne font pas forcément parties de cette liste)?
2: Est ce qu'on a la possibilité de faire plusieurs listes déroulantes liées entre elles, en supprimant les données si on change le choix? (j'ai essayé de travailler avec indirect() mais à un certain moment je ne peux pas nommer une plage de cellule avec un numéro (les noms de plage acceptées à priorie sont ceux qui commencent par une lettre)
3: Comment peut on declancher une macro automatiquement apres la saisie dans une cellule donnée? (j'ai travaillé avec worksheet_change() mais ca parcoure toute la feuille et des fois j'ai une boucle indeterminée)
Private Sub Worksheet_Change(ByVal Target As Range) 'Target renvoie certaines infos utiles : MsgBox Target 'renvoie la valeur MsgBox Target.Row 'renvoie la ligne MsgBox Target.Column 'renvoie la colonne MsgBox Target.Address 'renvoie l'adresse complete End Sub
4: J'ai créé un dossier qui m'archive des fichiers excel sans garder les macros pour gagner un peu de la place. J'ai besoin de parcourir tous les fichiers de cette archive a chaque fois que je saisie des données dans une ligne de ma feuille courante. Je dois comparer les données saisies avec celles de mon archive qui me permettera de voir si j'avais entré les memes informations dans des cellules différentes (pas toute la ligne du saisie mais quelques cellules). NB: les données ne se trouvent forcément pas dans les memes numéros de lignes des deux fichiers. Dans le cas ou les memes données saisies dans les cellules concernées sont entrées, le programme doit m'avertir que j'ai deja eu le meme motif. Il est préférable qu'il me fasse un message dans une colonne en face pour me le signaler.
(je n'ai pas la possibilité de travaillé avec un autre outil autre qu'excel, j'avais la notion des triggers dans ma tete mais je n'arrive toujours pas à voir comment résoudre ca)
Pour effectuer une recherche dans Excel en Macro, il faut utiliser la fonction find.
La fonction telle qu'elle écrite ci-dessus, retourne True si la recherche a aboutie.
Pour pouvoir utiliser les variables VcLig et VcCol vous devez les déclarer en public dans votre modul principal.
Function cherchC(nomF As String, valCherch As String) As Boolean 'fonction de recherche... '********************************************************** ' recherche la valeur 'valCherch' et nous indique le ' N° de ligne et de Colonne où elle se trouve VcLig / VcCol '********************************************************** Dim vc As Variant Sheets(nomF).Activate Sheets(nomF).Cells(1, 1).Activate Set vc = Cells.Find(what:=valCherch, lookAt:=xlWhole, After:=ActiveCell, SearchOrder:=xlByColumns, SearchDirection:=xlNext, LookIn:=xlValues, MatchCase:=False, SearchFormat:=False) If Not vc Is Nothing Then VcCol = vc.Column VcLig = vc.Row cherchC = True End If End Function
' Variables Publiques à placer Au début du module Principale Public Vclig As Integer Public VcCol As Integer Sub Test_recherche() ' Pour appeller la fonction : Nom_Feuille = "Feuil1" Valeur_cerchee = "CSV" Cherc = cherchC(Nom_Feuille, Valeur_cerchee) If Cherc = True Then 'Si valeur trouvée... Numero_Ligne = Vclig ' ligne Numero_Colonne = VcCol ' Colonne End If End sub
Sub test() chiffre = InputBox("Entrez un chiffre entre 1 et 5", "test SELECT / CASE ") Select Case chiffre Case 1 ' SI chiffre = 1 .;alors faire... MsgBox "vous avez écrit : 1" Case 2 ' chiffre = 2 ... MsgBox " chiffre = 2 " Case 3, 4, 5 ' chiffre = 3,4,5 MsgBox "Chiffre compris entre 3 et 5" Case Else ' les autres cas.. MsgBox "Le chiffre indiqué ne correspond pas aux limites demandées.." End Select End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionNB: j'éspère que tu n'as pas été dérangé(e)