Incompatibilité de type

Bonjour,

je tente d'adapter un formulaire de Monsieur Boisjontier, et je me bute à une incompatibilité de type sur cette ligne

Me(nom_control) = f.Cells(ligneEnreg, col)

sur cette portion du code:

Private Sub NomCherche_click()
  ligneEnreg = Sheets("BD").[A:A].Find(NomCherche, LookIn:=xlValues).Row
  For Each c In Me.Controls
         nom_control = c.Name
         If nom_control <> "NomCherche" Then
           col = Application.Match(nom_control, [titre], 0)
           Select Case TypeName(c)
           Case "TextBox"
             Me(nom_control) = f.Cells(ligneEnreg, col)
           Case "Frame"
             For Each opt In c.Controls
              If f.Cells(ligneEnreg, col) = opt.Caption Then opt.Value = True
             Next opt
           Case "ListBox"
             temp = f.Cells(ligneEnreg, col)
             a = Split(temp, ";")
             For j = 0 To Me(nom_control).ListCount - 1: Me(nom_control).Selected(j) = False: Next j
             If UBound(a) >= 0 Then
               For j = 0 To Me(nom_control).ListCount - 1
                If Not IsError(Application.Match(Me(nom_control).List(j), a, 0)) Then
                   Me(nom_control).Selected(j) = True
                Else
                   Me(nom_control).Selected(j) = False
                End If
               Next j
             End If
           End Select
         End If
  Next c
  Me.Nom.SetFocus
End Sub

Je n'en trouve pas la raison!

Merci de votre aide.

Bonsoir,

Plusieurs raisons possibles mais en voici déjà une :

col = Application.Match(nom_control, [titre], 0)

Si le matching est erroné, col contient une valeur d'erreur.

Bonjour thev,

Merci pour la piste.

Je viens de me rendre compte que je n'avais pas joint mon fichier.

Que dois-je faire pour un bon matching?

Bon week-end

Bonjour,

Un essai >

  • A1:i1 > j'ai nommé cette plage "Titres"
  • Puis, j'ai modifié le début de la macro ainsi :
Private Sub ChoixMat_click()
   ligneEnreg = Sheets("BD").[A:A].Find(ChoixMat, LookIn:=xlValues).Row
   For Each c In Me.Controls
      nom_control = c.Name
      If nom_control <> "ChoixMat" Then
         If Not IsError(Application.Match(nom_control, Range("Titres"), 0)) Then
                col = Application.Match(nom_control, Range("Titres"), 0)
                ...
                ...
                ...
                

Ça semble bien fonctionner avec les différents choix dans la combobox.

Mais le fichier n'a pas été testé sous Excel 2003.

ric

Bonjour Ric,

Merci pour ton aide.

J'ai fait quelques tests, mais dès que j'inscrits le chiffre 1 dans le ComboBox Choix matricule, il renvoit à un seul individu, et le curseur bascule dans le TextBox Matricule! Cela ne semble pas être le cas pour les autres matricules qui ne commencent pas par 1.

L'autre constat, quand j'utilise le bouton Validation, il y a une incompatibilité de type sur cette ligne

   f.Cells(ligneEnreg, col) = tmp

A+

Bonjour à tous,

... dès que j'inscrits le chiffre 1 dans le ComboBox Choix matricule, il renvoit à un seul individu, et le curseur bascule dans le TextBox Matricule! ...

Regarde au bas de ta liste en colonne A, c'est là que se situe le problème.

Je suggère de changer le format de cette colonne pour des chiffres 0 décimale.

Puis de convertir les données (menu Données > Convertir > Terminer).

Et enfin, de trier cette colonne.

[quoteL'autre constat, quand j'utilise le bouton Validation, il y a une incompatibilité de type sur cette ligne

   f.Cells(ligneEnreg, col) = tmp

Le même problème que j'ai mentionné ... remplace :

col = Application.Match(nom_control, [Titres], 0)

par

col = Application.Match(nom_control, Range("Titres"), 0)

À la 6e ligne de la macro Sub B_validation_Click()

Mes connaissances ne sont pas suffisantes pour expliquer pourquoi [Titres] ne fonctionne pas.

ric

A+

[/quote]

bonjour à tous,

j'ai parcouru le code du userform, des sub Private Sub ChoixMat_click() et Private Sub B_validation_Click(), et je ne comprend pas l'utilité d'une telle usine à gaz pour mettre à jour 7 textbox .

               Case "TextBox"
                  Me(nom_control) = f.Cells(ligneEnreg, col)

suffirait ?

Il y a par ailleurs

              Case "Frame"
                For Each opt In c.Controls
                  If opt.Value = True Then f.Cells(ligneEnreg, col) = opt.Caption
                Next opt

Mais comme les Labels n'ont pas de Value et qu'il y a un Label sur frame2 => erreur

A+

Bonjour ric et AlgoPlus,

Merci pour vos interventions.

Ouien! Comme mentionné plus haut, je tente une adaptation du code de Boisjontier!

En fait, mon objectif était de rendre le ComboBox (Choix matricule) intuitif, mais, avec ma version 2 (dont le code semble plus simple), je n'y parvenais pas , alors j'ai pigé dans un autre exemple de Boisjontier qui avait l'option intuitif, et c'est là que des erreurs d'incompatibilité de type sont apparues.

Je viens de constater aussi que la portion du code de la version 3 qui touche le frame est une section de l'Userforme de Boisjontier que j'ai supprimé, et remplacé par un autre frame2 (que je n'ai pas encore codé).

Alors, si vous avez des propositions pour simplifier et corriger le code, je suis preneur. votre aide m'est indispensable n'étant pas suffisamment habile pour apporter moi-même toutes les corrections.

Merci encore pour votre générosité et votre temps.

A+

Bonjour à tous,

Malgré les changements recommandés, j'ai toujours une incompatibilité de type sur cette ligne

Me(nom_control) = f.Cells(ligneEnreg, col)

du bouton Validation, et j'en ne trouve pas la raison.

Merci de votre aide.

Bonjour,

il y a deux discussions en cours sur le même sujet!!

Dans Private Sub B_validation_Click() :

vous rechercher le nom du controle dans la ligne de titre de la feuille BD pour déterminer le N° de colonne où écrire:

col = Application.Match(nom_control, Range("Titres"), 0)

ça fonctionne bien pour la partie "administrative" car tous les contrôles de cette partie ont une correspondance dans la feuille BD, mais les contrôles pour gérer Casques, Gants ... n'ont pas de correspondance dans cette feuille mais dans des feuilles qui leur sont propres ( Feuille Casque pour les casques....)

Par ailleurs cette sub (Private Sub B_validation_Click()) est censée écrire les données dans les feuilles.

Or avec:

Me(nom_control) = f.Cells(ligneEnreg, col)

on initialise les contrôles avec le contenu de la feuille f . Donc l'opération inverse de ce qui est attendu.

Je pense qu'il faut reprendre toute cette partie écriture .

A+

Une adaptation lecture écriture.

La partie suppression n'est pas modifiée.

11vdmichel.zip (60.62 Ko)

Bonjour AlgoPlus,

Les gens de ce forum m'impressionneront toujours...

Si vous permettez, j'ai quelques petites questions sur votre adaptation :

À l'ajout d'un nouvel individu, dois-je aussi compléter le textbox Choix de matricule de la feuille admin et des autres textbox en bleu?

Si j'ajoute un nouvel individu, est-ce que je dois remplir tous les champs pour toutes les feuilles (bottes, casque, etc.)? (Car une personne ne reçoit pas forcément tous les équipements)!

Pourquoi à l'ouverture du fichier, il y a VDMICHEL:1 et VDMICHEL:2 qui s'ouvrent?

Pour le bouton supprimer, j'imagine qu'il faut en créer un pour chaque feuille (bottes, caque, etc.)?

Mille mercis

À l'ajout d'un nouvel individu, dois-je aussi compléter le textbox Choix de matricule de la feuille admin et des autres textbox en bleu?

Les Textbox de la partie équipement sont issues de la textbox partie principal(administratif) il n'y a pas lieu de les saisir. On pourrait les masquer voire les supprimer(avec quelques modif!!)

Je regarde pour la textbox partie administrative.

Si j'ajoute un nouvel individu, est-ce que je dois remplir tous les champs pour toutes les feuilles (bottes, casque, etc.)? (Car une personne ne reçoit pas forcément tous les équipements)!

Non. à l'enregistrement , il va se créer une ligne avec juste le N° matricule dans les feuilles concernées(Casque bottes ...)

Pourquoi à l'ouverture du fichier, il y a VDMICHEL:1 et VDMICHEL:2 qui s'ouvrent?

Heuu.... curieux, je vais regarder et mettre une autre version.

Pour le bouton supprimer, j'imagine qu'il faut en créer un pour chaque feuille (bottes, caque, etc.)?

Ben ... ça dépend du besoin!

Si on a parfois besoin que de supprimer un seul équipement on peut envisager un bouton "supprimer" par onglet équipement. Mais on peut tout aussi bien effacer les champs de cet onglet.

Par contre si on veut supprimer une personne, la ligne correspondante dans les feuilles BD Bottes Casque.... doit être supprimée.

A+

La version sans double:

20vdmichel.zip (60.65 Ko)

Bonjour AlgoPlus,

Merci pour le retrait du double.

Effectivement, vous avez bien raison, le textbox matricule devient superflue pour la partie équipement, à reconsidérer!

Pour l'heure, j'intègre le reste des équipements.

Cela fait, il me restera à identifier les besoins en contrôles des différentes feuilles équipements (suppression, modification, ajout, etc).

Merci infiniment pour votre support.

Re-bonjour AlgoPlus,

Là, je suis confondu. J'ai fait quelques tests de saisie (modification, ajout) avec votre dernière version, et je rencontre toujours des incompatibilités de type soit sur la ligne des bottes soit sur la ligne des casques, parfois je tente des modifications casque, et il y a incompatibilité sur les bottes, voir l'inverse. Même chose si j'ajoute une nouvelle personne...

Bref, j'en perds mon latin.

Merci

A+

Les incompatibilités de types sont sans doute dues à une tentative de conversion de chaine en numérique.

Tout ce qui me semblait devoir être chiffré, est converti par CDbl(xxxxx) en "numerique". Si vous saisissez de l'alphabétique : erreur 13

Dite moi pour chaque feuille quelles colonnes doivent absolument être numériques et je corrigerai.

A+

Bonjour AlgoPlus,

Désolé pour un retour si tardif! Bien malgré moi, j'ai été écarté de mes projets en cours pour une mandat spécial.

Je suis de retour pour poursuivre le développement de mon projet multipage.

J'ai fait une petite charte pour les colonnes de chaque feuilles en espérant que cela puisse vous aider.

Je suis en train de bonifier mon projet en complétant les feuil Gants et HB. Pour cet étape, j'aurai besoin d'accompagnement, car pour ces deux feuilles il y a plusieurs items par matricule. Croyez vous qu'il serait possible de correspondre en privé pour la suite?

Merci encore

Bonjour cher forum,

Désolé pour ceux et celles qui suivaient ce poste.

Je suis dans l'obligation d'abandonner ce projet pour d'autres mandats.

Merci à les collaborateurs.

A+

Rechercher des sujets similaires à "incompatibilite type"