Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

MACRO RECHERCHER

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

J

jerems

Guest
Bonjour,

J'ai une colonne avec des noms de famille. J'aimerais que, lorsque j'écris un de ces noms en haut de la même colonne, je voudrais pouvoir accéder directement au nom dans cette même colonne grâce à un bouton auquel est liée une macro.

Pouvez-vous m'aider?

Merci

Jerems
 
Re : Re:MACRO RECHERCHER

Bonjour,

Je suis débutant dans VBA. Et voici mon problème (j"ai déjà cherché sur le net, mais n'ai pas trouvé grand chose de convaincant) :

J'ai un classeur, avec 4 feuilles :
- Feuille 1 = Feuille de recherche
- Feuille 2 = 2011
- Feuille 3 = 2012
- Feuille 4 = 2013

Les 3 feuilles (par année) sont structurée de la manière suivante :
Colonne A : Colonne B : Colonne C : Colonne D : Colonne E :
Nom Prénom Salaire Coefficient Catégorie

Ce que je souhaite, c'est qu'en tapant, dans une cellule de la feuille 1, le nom d'un salarié, apparaisse, en dessous de cette cellule, le nom, le prénom, le salaire, le coefficient, et la catégorie du salarié en 2011, 2012, et 2013.

Je ne sais pas si c'est très clair (et si c'est la cas, dites-le moi).

Merci beaucoup pour votre aide.

Cordialement,
 
Re : MACRO RECHERCHER

Bonjour,

voici une solution inspirée du code présenté ci-dessus. Il faut renseigner le nom recherché en B2 de la première feuille et cliquer sur le bouton "Recherche".

Vois si cela te conviens.

Bonsoir jim7963,

Un grand merci pour votre aide et pour votre réactivité !
Cette macro fonctionne très bien, et c'est tout à fait ce que je souhaitais faire.
En revanche, pouvez-vous, si vous en avez le temps, m'expliquer votre macro : d'abord parce que j'aime bien comprendre, pour apprendre, et ensuite parce que cela m'évitera d'avoir à demander à nouveau si j'ai besoin de la modifier ! Mais je suis débutant !

Encore un grand merci.

Bonne soirée.

Hugues Lancelot
 
Re : MACRO RECHERCHER

Bonjour,

je sais ce que c'est, moi aussi j'ai débuté il y a à peine quelques mois.

Code:
Sub Recherche()
Application.ScreenUpdating = False    [COLOR=#008000] 'Bloque la mise à jour de l'écran, permet d’accélérer le traitement de la macro[/COLOR]
[COLOR=#008000]'Définition des variables[/COLOR]
Dim motcle As Variant
Dim fin As Integer
Dim c1 As Variant, c2 As Variant, c3 As Variant
Dim first As Integer, second As Integer, third As Integer
    With Sheets(1)   [COLOR=#008000]'se positionne sur la 1ère feuille du classeur on aurait aussi pu écrire Sheets("Feuille de recherche")[/COLOR]
motcle = .Range("B2").Value      [COLOR=#008000]'définit que le motcle se trouve en cellule B2[/COLOR]
[COLOR=#008000]' ___________Test si un mot clé a été donné[/COLOR]
If motcle = "" Then
[COLOR=#008000]' Si aucun mot clé, on alerte et on arrete la procédure[/COLOR]
       MsgBox ("Aucun mot clé n'a été donné")
        End
        End If
    End With
  [COLOR=#008000]'_____________________________________________________________[/COLOR]
  
    With Sheets(2).Range("A2:A" & Range("A2").End(xlDown).Row)   [COLOR=#008000]'se positionne sur la colonne A de la 2ème feuille du classeur et va de A2 jusqu'à la dernière ligne où il y a une cellule de remplie, attention avec cette méthode il ne faut pas laisser de ligne vide entre les personnes sinon la sélection s'arrêtera au dernier nom avant la ligne vide[/COLOR]
   Set c1 = .Find(motcle, LookIn:=xlValues) [COLOR=#008000] [COLOR=#008000]' recherche du mot clé dans la plage selectionnée ci-dessus[/COLOR]
        If c1 Is Nothing Then        [COLOR=#008000]' si mot clé non trouvé alors[/COLOR]
       MsgBox ("Personne non présente en 2011!") [COLOR=#008000]' fait apparaître un message à l'écran[/COLOR]
       Range("B3:F3").ClearContents        [COLOR=#008000]' vide les cellules de B3 à F3 sur la 1ère feuille du classeur si elles étaient remplies par une recherche précédente[/COLOR]
       ElseIf Not c1 Is Nothing Then      [COLOR=#008000]  ' si le mot clé est trouvé[/COLOR]
       first = c1.Row                 [COLOR=#008000]'définit le mot first comme étant la ligne complète où se situe le mot clé[/COLOR]
       End If
    End With
    If Not c1 Is Nothing Then                    [COLOR=#008000]' si le mot clé a été trouvé alors[/COLOR]
       Sheets(2).Range("A" & first & ":F" & first).Copy     [COLOR=#008000]' selection de la plage A à F de la ligne où le mot clé a été trouvé et copie[/COLOR]
        Sheets(1).Range("B3").Select          [COLOR=#008000]'Selection de la cellule B3 de la 1ère feuille du classeur[/COLOR]
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False                    [COLOR=#008000]' collage des valeurs copiées[/COLOR]
    End If
    With Sheets(3).Range("A2:A" & Range("A2").End(xlDown).Row) [COLOR=#008000] 'on recommence la même procédure avec la feuille 3 du classeur[/COLOR]
        Set c2 = .Find(motcle, LookIn:=xlValues)
         If c2 Is Nothing Then
            MsgBox ("Personne non présente en 2012!")
            Range("B4:F4").ClearContents
        ElseIf Not c2 Is Nothing Then
        second = c2.Row
        End If
    End With
    If Not c2 Is Nothing Then
        Sheets(3).Range("A" & second & ":F" & second).Copy
        Sheets(1).Range("B4").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    End If
    With Sheets(4).Range("A2:A" & Range("A2").End(xlDown).Row)     [COLOR=#008000]' on recommence encore la même procédure avec la feuille 4 du classeur[/COLOR]
         Set c3 = .Find(motcle, LookIn:=xlValues)
         If c3 Is Nothing Then
            MsgBox ("Personne non présente en 2013!")
            Range("B5:F5").ClearContents
        ElseIf Not c2 Is Nothing Then
        third = c3.Row
        End If
    End With
    If Not c3 Is Nothing Then
        Sheets(4).Range("A" & second & ":F" & second).Copy
        Sheets(1).Range("B5").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    End If
    
Sheets(1).Range("B2").Select              [COLOR=#008000]' on se positionne sur la cellule B2 de la 1ère feuille du classeur[/COLOR]
Application.ScreenUpdating = True      [COLOR=#008000]' on réactive la mise à jour de l'écran[/COLOR]

End Sub

Comme je l'ai dis précédement il s'agit d'une adaptation du code que j'ai trouvé plus-haut, d'autres personnes du forum bien plus expertes que moi pourront peut-être l'améliorer.

Bon courage dans ton apprentissage.
 
Dernière édition:
Re : MACRO RECHERCHER

Bonsoir,

J'aurais besoin d'un petit coup de main !
Voilà ce que je souhaite faire :
J'ai une feuille nommée "Synthèse" (première feuille du classeur).
Je voudrais, en cellule B6 de cette feuille, récupérer le contenu de la cellule B4 de la feuille suivante (quelque soit la feuille).
J'ai une macro avec le code suivant :

Function CellSuiv(adresse)
n=ActiveWorksheet.Index
CellSuiv=ThisWorkbook.Worksheets(n+1).Range(adresse)
End Function

Le souci est que cette macro créé une fonction, mais je voudrais que lorsque je change la valeur de la cellule B4 de la seconde feuille, la macro se recalcule automatique (actuellement, je dois, à chaque fois, relancer la macro en appuyant sur "Entrée").

Quelqu'un aurait-il une solution ?

Je vous remercie.

Cordialement,
Hugues Lancelot
 
Re : MACRO RECHERCHER

Bonsoir hugueslancelot,

Essayez cette macro:
VB:
Function CellSuiv(adresse As Range)
Application.Volatile
  CellSuiv = Application.Caller.Parent.Next.Range(adresse.Address)
End Function

nb: retourne l'erreur #VALEUR! si on appelle la focntion depuis la dernière feuille.
 

Pièces jointes

Dernière édition:
Re : MACRO RECHERCHER

Bonsoir Mapomme,

Un grand merci pour votre aide rapide et efficace, c'est exactement ce que je cherchais !
Sans vouloir abuser de votre temps, j'ai pourtant une autre question :
Je voudrais, sur cette même feuile "Synthèse", récupérer :
- Le premier jour de chaque mois : le contenu de la cellule B4 de la feuille 2, et le copier en C1 de "Synthèse"
- Le deuxième jour du mois : le contenu de cette même cellule B4 de la feuillle 2, et le copier en C2 de "Synthèse"
- Le troisième jour du moi : la cellule B4 de la feuille 2, copier en cellule C3 de "Synthèse"..
- Etc.

Mon objectif est de créer automatiquement un historique quotidien du contenu de la cellule B4 de la feuille 2, historique à partir du 1er de chaque mois, jusqu'au 30 (ou 31).

Est-ce faisable ?

Encore un grand merci.

Hugues Lancelot
 
Re : MACRO RECHERCHER

(re)Bonsoir hugueslancelot;

Un essai dans le fichier joint.
  • On utilise deux colonnes sur la feuille "Synthese": colonne C et D.
  • La colonne C contiendra la date de sauvegarde de la cellule B4 de la feuille "Feuil2".
  • La colonne D contiendra la valeur de la cellule B4 de la feuille "Feuil2" le jour de la sauvegarde.
  • Pour un jour donné, il n'y a qu'une seule sauvegarde à l'occasion de la première ouverture du fichier.

Le code dans le module de code de Thisworkbook:
VB:
Private Sub Workbook_Open()
Dim Jour As Long

  Jour = Day(Date) + 1
  With Sheets("Synthese")
    If .Range("C" & Jour) <> Date Then
      .Range("C" & Jour) = Date
      .Range("D" & Jour) = Sheets("Feuil2").Range("B4").Value
    End If
  End With
End Sub

Cela revient à sauvegarder le jour J la valeur de B4 lors de la dernière utilisation du fichier. On ne peut pas savoir à quel jour correspond cette dernière valeur puisque le fichier peut ne pas avoir été utilisé pendant un ou plusieurs jours. La seule information fiable est donc le jour de sauvegarde.
 

Pièces jointes

Dernière édition:
- 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
18
Affichages
584
Réponses
5
Affichages
344
Réponses
4
Affichages
331
Réponses
3
Affichages
313
Réponses
5
Affichages
696
Réponses
4
Affichages
394
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…