incompatibilité de type

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 !

hemardjean

XLDnaute Occasionnel
Bonjour le forum

Des erreurs se sont glissées dans la transformation de mon formulaire et je n’arrive pas à trouver la solution.

Je suis parti d’un formulaire trouvé sur le forum et après ajout de ListItems le message suivant s’affiche :
« erreur d’exécution ’13 incompatibilité de type»

Après recherche sur le forum je n’ai trouvé aucune solution et je me trouve donc bloqué.

Je vous joins le fichier.

Merci de votre aide

Cordialement
 

Pièces jointes

Re : incompatibilité de type

Bonjour,

Le premier problème que je vois, provient de la colonne A qui est vide ( de la feuille BD)

Je ne sais pas pourquoi le texte de la colonne A est en blanc.

On entre quelques valeurs dans la colonne A et le formulaire fonctionne. Je n'ai pas testé à fond.

G
 
Re : incompatibilité de type

Bonjour gelinotte et le forum

Merci pour ta réponse erreur de débutant.

Dans le dossier d'origine la colonne sera remplie par un autre formulaire avec un n° généré automatiquement .

J'avance doucement et deux nouveaux blocages viennent de se produire le 1er lorsque je tape sur le bouton "SELECTIONNER" dans l’UserForm2 et après avoir fait le choix dans les listes « colonne et la valeur » le formulaire ne fait pas le choix demandé il devrait n'afficher que la sélection?

Le 2eme se situe sur le bouton « MODIFIER » peut-on changer le formulaire mot de passe mais en le gardant pour prévenir du danger de la modification.

Dernière question dans l’ UserForm3 où peut-on changer les TextBox car ils devront afficher les colonnes A,B,C,D,E et le TextBox6 la colonne AV (prix) ?

Je poserais sûrement d'autres questions au fur et à mesure de l'avancé des formulaires

Merci de ton aide.
@+
 
Re : incompatibilité de type

Bonsoir.
Deux problème:
1) vous ne bouclez pas sur les Areas de la partie visible de la plage filtrée, laquelle est une plage multizone,
2) vous bouclez sur des cellules au lieu de boucler sur des lignes.
Peut être auriez vous intérêt à verser préalablement la plage filtrée dans un tableau de Variant avec une de mes procédures:
VB:
Function ValeursFiltrées(Optional ByVal F As Worksheet) As Variant()
If F Is Nothing Then Set F = ActiveSheet ' Assume la feuille active si elle n'est pas précisée.
ValoriserFiltre ValeursFiltrées, F ' Exécute la procédure pour le tableau à retourner.
End Function
Sub ValoriserFiltre(TSorti() As Variant, ByVal F As Worksheet)
Dim PlgF As Range, LMax As Long, CMax As Long, Zone As Range, TEntré() As Variant, L As Long, C As Long
Set PlgF = F.AutoFilter.Range ' L'initialise à l'unique plage possible de la feuille couverte par un filtre auto.
Set PlgF = PlgF.Rows(2).Resize(PlgF.Rows.Count - 1) ' La réinitialise de façon à en sauter les entêtes.
Set PlgF = PlgF.SpecialCells(xlCellTypeVisible) ' La réinitialise de façon à n'en prendre que les cellules visibles.
       Rem. Ceci aboutit dans le cas général à une plage multi-zones, tout comme une union ou une sélection multiple.
LMax = 0: CMax = PlgF.Columns.Count ' Nombre de lignes de sortie à 0, et nombre de colonnes de la plage filtrée noté.
For Each Zone In PlgF.Areas ' Pour chaque zone:
   LMax = LMax + Zone.Rows.Count ' Ajoute au nombre de lignes total celui de la zone.
   Next Zone
ReDim TSorti(1 To LMax, 1 To CMax) As Variant ' Redimensionne convenablement le tableau à produire.
LMax = 0 ' Numéro de ligne de sortie courant remis à 0.
For Each Zone In PlgF.Areas ' Pour chaque zone:
   TEntré = Zone.Value ' en récupère l'intégralité des valeurs.
   For L = 1 To UBound(TEntré, 1): LMax = LMax + 1 ' Pour chacune des lignes, le N° de ligne de sortie est incrémenté
      For C = 1 To CMax: TSorti(LMax, C) = TEntré(L, C): Next C ' et on y copie la valeur de chaque colonne.
      Next L
   Next Zone
End Sub
Bon courage.
Cordialement.
 
Dernière édition:
Re : incompatibilité de type

Bonjour Dranreb gelinotte et le forum

Merci de m’aider mais là je suis un peu coincé car vous utilisez beaucoup de terme que je ne connais pas car je ne suis qu’un petit débutant et un bidoulleur je prends à droite je prends à gauche quelque fois ça marche quelque fois ça marche pas (Garcimor ?) et quand ça marche pas je me tourne vers vous les EXCELLENTS.

Donc pouvez vous m’expliquer ce qu’est un tableau de Variant et un areas mais aussi m’expliquer SVP où je place votre code dans quelles UserForm, ou ListView où dans quel Module encore merci.

Cordialement
 
Re : incompatibilité de type

Donc pouvez vous m’expliquer ce qu’est un tableau de Variant
C'est un truc déclaré par exemple: Dim TV() As Variant,
ça peut faire l'objet d'une instruction:
VB:
ValoriserFiltre TV, WorkSheets(2)
et ça s'accède par TV(Ligne, Colonne)
C'est une propriété de l'objet Range qui constitue une collection de sous plages de cellules contiguës. Cette collection n'a qu'un seul élément qui se confond avec la plage si elle n'est constituée que de cellules contiguës.
où je place votre code
Dans un module ordinaire.

Et j'allais oublier un truc important: Ubound(TV, 1) donne son nombre de lignes et Ubound(TV, 2) son nombre de colonnes
ou plus exactement leurs indices maxi respectifs, ce qui revient au même puisque conformément aux habitudes d'Excel ils commenceront à 1 et non à 0 pour le tableau fabriqué par ValoriserFiltre.
À +
 
Dernière édition:
Re : incompatibilité de type

Ben oui, encore faut il déclarer votre tableau TV dans votre userform, vous en servir comme indiqué et y puiser vos informations plutôt que directement dans la plage filtrée que vous ne saviez pas lire et que ValoriserFiltre aura lu à votre place.
 
Re : incompatibilité de type

Ce n'est pas au début du userform qu'il faut le mettre mais dans la procédure où vous voulez récupérer des données d'une plage filtrée, et il ne faut plus essayer de la lire vous même, c'est trop compliqué pour vous, vous la faites lire par ValoriiserFiltre et ensuite vous puiser dans le tableau qu'il aura fabriqué. Inutile de lui indiquer la plage filtrée concernée: il la trouve parce qu'il ne peut en exister qu'une seule dans la feuille et qu'elle est connue, et qu'il suffit donc de lui indiquer la feuille concernée en 2ième paramètre.
 
- 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

Discussions similaires

Réponses
2
Affichages
187
Réponses
21
Affichages
471
Réponses
1
Affichages
472
W
  • Question Question
XL 2021 Macro
Réponses
6
Affichages
313
Réponses
3
Affichages
241
Réponses
5
Affichages
649
Deleted member 453598
D
Retour