Recherche automatique

Bonjour,

Je sollicite votre aide car je souhaiterais créer une application excel de gestion de personnel permettant, entre autres, d'enregistrer le relevé mensuel des impressions pour chaque membre du personnel (chacun étant identifié par un code photocopieur). En cliquant sur le bouton chercher (userform de la page "impressions"), je voudrais que les informations nom, prénom et code photocopieur soient prises automatiquement du tableau source situé dans la page "installation". J'ai tenté un code comme vous pouvez le voir dans le fichier ci-joint, mais celui-ci ne marche pas, pourriez-vous m'aider?

Merci d'avance

Bonjour,

Tu cherches un nombre à partir d'une valeur de type String, convertis-la avec Val, ça marchera mieux !

NB- Tes variables Nom et Prénom ne sont pas typées (donc type Variant) : toute variable doit être typée individuellement pour l'être. Si ton code était correctement indenté, ce serait aussi plus agréable à lire et plus facile à traiter !

Bonjour,

Je vous remercie pour votre réponse. Toutefois, je suis vraiment novice en ce qui concerne VBA, et je n'ai pas tout compris. Il faudrait que je mette "As Val" au lieu de "As String"? Pourtant, je pensais que vu qu'il s'agit d'une variable d'une longueur indéfinie il fallait utiliser String...

"Etre typée individuellement" signifie qu'il faudrait que je fasse une ligne pour la variable nom, une pour prénom et une autre pour le code photocopieur?

Et vous avez raison, je ne maîtrise pas bien l'indentation mais je ferai plus attention désormais!

Merci encore

Surtout pas !

Val est une fonction.

Val convertit en nombre le début d'une chaîne s'il est numérique, elle ne tient pas compte des espaces, et si le début n'est pas numérique elle renvoie 0.

La recherche se faisant sur la valeur de la TextBox, il faut l'utiliser en mettant Val(TextBoxx.Value) comme argument de recherche.

Pour les variables, inutile d'aller à la ligne, mais il faut typer chaque variable (des variables de types différents peuvent être déclarées sur la même ligne :

Dim nom As String, prénom As String, i As Integer, etc.

Pour gagner de la place, on peut utiliser le caractère de déclaration de type pour quelques variables numériques et pour String :

Dim nom$, prénom$, i%.... [on a en outre : & pour Long, ! pour Single et # pour Double].

Cordialement.


J'ai repris ton code pour préciser, c'est :

Val(TextNumbadge.Value) que tu dois avoir comme argument de recherche,

Parce que la valeur cherchée est numérique mais ton textbox te renvoie une valeur chaîne.

Pour ce qui est des types déclarés, c'est autre chose, ils doivent évidemment correspondre aux types des valeurs que tu vas leur affecter. Si le type ne correspond pas, VBA va vite te le faire savoir avec une erreur 13... Tu aviseras à ce moment !

J'ignorais tout cela, mon code fonctionne désormais, merci beaucoup!

Bonjour,

Je reviens vers vous car, grâce à vos éclaircissements, mon code pour faire une recherche automatique marche très bien (cf userform ModTéléphone par exemple, CmdCherche). Toutefois, il ne marche pas pour le userform ModVéhicules alors que je reprends la même base, je ne comprends vraiment pas... Pourriez-vous m'éclairez?

Merci beaucoup

Si cela fonctionnait c'eut été une vraie surprise.

Private Sub CmdModifier_Click()
Dim rang
Dim ch_numplaque
rang = Sheets(3).Range("ColonneNumtelephone")
ch_numplaque = WorksheetFunction.Match(Val(TxtNum.Value), rang, 0) + 2
    With Sheets(3)
        .Range("C" & ch_numtel).Value = TxtModele.Value
        .Range("D" & ch_numtel).Value = TxtBaie.Value
        .Range("E" & ch_numtel).Value = TxtNumBrassage.Value
        .Range("F" & ch_numtel).Value = TxtNumPrise.Value
        .Range("G" & ch_numtel).Value = TxtCarte.Value
        .Range("H" & ch_numtel).Value = TxtType.Value
        .Range("I" & ch_numtel).Value = TxtForfait.Value
    End With

  TxtModele.Value = " "
  TxtBaie.Value = " "
  TxtNumBrassage.Value = " "
  TxtNumPrise.Value = " "
  TxtCarte.Value = " "
  TxtType.Value = " "
  TxtForfait.Value = " "
End Sub

Aucun des TextBox visé dans cette procédure n'existe ! Ils sont peut-être ailleurs, mais m'est avis que tu as copié une procédure destinée à un autre Userform.

Tu comptes encore ajouter combien de Userforms et de Modules ? Surtout en double ! Là tu prends le chemin pour avoir ce genre d'incidents à répétition.

Conseils récurrents : nettoyer les déchets, indenter le code, réécrire ce qui sort de l'enregistreur et éviter de l'imiter...

Rechercher des sujets similaires à "recherche automatique"