Fonction recherche vba excel
Fermé
thecerebral
Messages postés
1
Date d'inscription
jeudi 8 mars 2012
Statut
Membre
Dernière intervention
8 mars 2012
-
8 mars 2012 à 23:29
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 9 mars 2012 à 08:58
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 9 mars 2012 à 08:58
A voir également:
- Fonction recherche vba excel
- Excel fonction si et - Guide
- Liste déroulante excel - Guide
- Fonction moyenne excel - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Aller à la ligne excel - Guide
2 réponses
f894009
Messages postés
17206
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
22 novembre 2024
1 710
9 mars 2012 à 08:42
9 mars 2012 à 08:42
Bonjour,
.Range(A, No_ligne) = Sheets("recherche salarié").Cells("B4")
.Range().Value = Sheets("recherche salarié").Cells("B6").Value
.
.Range("A" & No_ligne) si vous avez une variable No_ligne qui existe.
Autrement exemple
.Range("A1").Value
et Cells(4,2) pas Cells("B4")
.Range().Value marche pas erreur de compilation
Bonne suite
.Range(A, No_ligne) = Sheets("recherche salarié").Cells("B4")
.Range().Value = Sheets("recherche salarié").Cells("B6").Value
.
.Range("A" & No_ligne) si vous avez une variable No_ligne qui existe.
Autrement exemple
.Range("A1").Value
et Cells(4,2) pas Cells("B4")
.Range().Value marche pas erreur de compilation
Bonne suite
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
Modifié par pijaku le 9/03/2012 à 08:59
Modifié par pijaku le 9/03/2012 à 08:59
Bonjour,
1- Vérifiez systématiquement tout vos noms de feuilles dans les syntaxes : Sheets("Nomdelafeuill").
En effet, je vois des Sheets("base") et des Sheets("BASE"). C'est pas la même chose!!!
2- il te faut compléter, dans ta sub enregistrement les .range()
3- Déclarer toutes tes variables : No_ligne n'est pas déclaré dans la sub enregistrement. A non plus...
4- la syntaxe pour copier coller :
Range("acopier").copy Range("coller")
plus simple, plus rapide et plus efficace que tous tes .Select...
5- un premier "dégrossissage" avec utilisation de la méthode Find pour rechercher plutôt qu'une boucle (cf recherche par matricule):
Cordialement,
Franck P
1- Vérifiez systématiquement tout vos noms de feuilles dans les syntaxes : Sheets("Nomdelafeuill").
En effet, je vois des Sheets("base") et des Sheets("BASE"). C'est pas la même chose!!!
2- il te faut compléter, dans ta sub enregistrement les .range()
3- Déclarer toutes tes variables : No_ligne n'est pas déclaré dans la sub enregistrement. A non plus...
4- la syntaxe pour copier coller :
Range("acopier").copy Range("coller")
plus simple, plus rapide et plus efficace que tous tes .Select...
5- un premier "dégrossissage" avec utilisation de la méthode Find pour rechercher plutôt qu'une boucle (cf recherche par matricule):
Option Explicit Sub Création_salarié() ' If Sheets("ajout salarié").Cells(12, 3).Value = "OK" Then With Sheets("BASE") .Rows("2:2").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove End With With Sheets("Ajout salarié") .Range("B4").Copy Sheets("BASE").Range("A2") .Range("B2").Copy Sheets("BASE").Range("B2") .Range("B3").Copy Sheets("BASE").Range("C2") .Range("B7").Copy Sheets("BASE").Range("D2") .Range("B8").Copy Sheets("BASE").Range("E2") .Range("B9").Copy Sheets("BASE").Range("F2") .Range("B10").Copy Sheets("BASE").Range("G2") .Range("F2").Copy Sheets("BASE").Range("H2") .Range("F3").Copy Sheets("BASE").Range("I2") .Range("B6").Copy Sheets("BASE").Range("K2") End With Else: MsgBox End If End Sub Sub recherche_par_matricule() Dim NumMatr As String Dim Trouve As Range Dim No_ligne As Long, LigneMax As Long NumMatr = InputBox("veuillez saisir le matricule", "recherche salarié", "") With Sheets("BASE").Columns(1) Set Trouve = .Cells.Find(NumMatr, lookat:=xlWhole) End With If Trouve Is Nothing Then MsgBox "Erreur de saisie - ou salarié inexistant" Exit Sub Else No_ligne = Trouve.Row End If Set Trouve = Nothing With Sheets("recherche salarié") .Range("B4") = Sheets("BASE").Cells(No_ligne, 1) .Range("B6").Value = Sheets("BASE").Cells(No_ligne, 9).Value .Range("B7").Value = Sheets("BASE").Cells(No_ligne, 4).Value .Range("B8").Value = Sheets("BASE").Cells(No_ligne, 5).Value .Range("B9").Value = Sheets("BASE").Cells(No_ligne, 6).Value .Range("B10").Value = Sheets("BASE").Cells(No_ligne, 7).Value .Range("B3").Value = Sheets("BASE").Cells(No_ligne, 3).Value .Range("B2").Value = Sheets("BASE").Cells(No_ligne, 2).Value .Range("F3").Value = Sheets("BASE").Cells(No_ligne, 10).Value .Range("F2").Value = Sheets("BASE").Cells(No_ligne, 8).Value End With End Sub Sub enregistrer_modifs() Dim reponse As Integer reponse = MsgBox("confirmez", vbYesNoCancel, "Modif salarié") If reponse = 6 Then With Sheets("BASE") '.Range("A" ) = Sheets("recherche salarié").Cells("B4") '.Range().Value = Sheets("recherche salarié").Cells("B6").Value '.Range().Value = Sheets("recherche salarié").Cells("B7").Value '.Range().Value = Sheets("recherche salarié").Cells("B8").Value '.Range().Value = Sheets("recherche salarié").Cells("B9").Value '.Range().Value = Sheets("recherche salarié").Cells("B10").Value '.Range().Value = Sheets("recherche salarié").Cells("B3").Value '.Range().Value = Sheets("recherche salarié").Cells("B2").Value '.Range().Value = Sheets("recherche salarié").Cells("F3").Value End With Else End If End Sub
Cordialement,
Franck P