Problème avec MsgBox excel 2010 Windows 8

Résolu
Bonjour, Merci à l'avance de votre aide je ne sais que copier et légèrement modifier les codes.
Mais grâce a vous le travail du club est plus simple.
En 1er Avec Private Sub Worksheet_Change(ByVal Target As Range) quand le nombre de lettres dépassent (colonne "B") la quantité prévue dans le Code le MsgBox s'affiche normalement mais a l'effacement du contenue en "B"une fenêtre erreur d'exécution '13' Incompatibilité de type s'ouvre. La ligne If Len(Target) > 25 Then devient JAUNE
En 2éme Colonne H11:H55 J'aimerais un message explication si l'on écrit couple ou COUPLE
Je joins un model et espère des réponses avec explications si possible
MERCI À L'AVANCE
micheleliane
https://www.cjoint.com/?0Lmxe35eopi

11 réponses

  1. bonjour
    D'abord sous la ligne "Option Explicit" en haut du module
    Ecrivez ceci "Option Compare Text" pour ne faire faire de différence entre les majuscules et les minuscules.

    Votre problème vient des cellules fusionnées, j'ai donc remplacé Target par Activecell
    Private Sub Worksheet_Change(ByVal Target As Range)
    'Test pour la colonne B
    If Target.Column = 2 Then
    If Len(ActiveCell) > 25 Then
    MsgBox "Attention le Champ ne doit pas DEPASSER LE CADRE"
    Target.Select
    End If
    End If
    If Target.Column = 8 And Target.Value = "Couple" Then MsgBox "affichage de votre texte"
    End Sub
    Bonne journée
    cdlt
    1. Bonjour Frenchie83 Merci de ta réponse rapide

      pour minuscule et majuscule cela fonctionne
      mais pour la colonne "B" le message ne s'affiche pas
      et l'Erreur a l'effacement se fait sur toutes les colonnes (peut être que cela se faisait avant)
      je joint le dossier avec les modifications que j'ai faite
      Merci à l'avance de se pencher sur mon problème
      micheleliane

      https://www.cjoint.com/?0LniFd82n22
      1. Contributeur
        Bonjour,
        Petite erreur avec ActiveCell ce n'est plus le contenu de Target mais celui de la nouvelle cellule.
        Dans certains cas, Target est considérer comme Range donc vaut mieux spécifier que c'est sont contenu que l'ont veux tester.
        J'ai testé..
        Private Sub Worksheet_Change(ByVal Target As Range)
            'Test pour la colonne B
            If Target.Column = 2 Then
                If Len(Target.Value) > 25 Then
                    MsgBox "Attention le Champ ne doit pas DEPASSER LE CADRE"
                    Application.EnableEvents = False
                    Target.Value = ""
                    Target.Select
                    Application.EnableEvents = True
                End If
            ElseIf Target.Column = 8 And Target.Value = "Couple" Then
                MsgBox "affichage de votre texte"
            End If
        End Sub

        Et ça devrait fonctionner.
        A+

        1. Bonjour,lermite222 et Frenchie83

          Merci à tous de votre aide cela fonctionne
          Mais pour la colonne "B" l'Erreur à l'effacement se fait, quand on efface une ligne qui a moins que les lignes demandées
          J'ai calculé la longueur de la colonne "B" en majuscule si cela est écrit en minuscule il est plus long aussi le texte peut-il restais.Pour cela j'ai mis en arrêt ('Target.Value = "")
          J'espère que cela ne gêne pas.
          Je joins le dossier avec les modifications
          Merci à l'avance
          micheleliane

          https://www.cjoint.com/?0LnnqHq0NP3
          1. Bonjour
            Comme je vous l'avais dit précédemment, les cellules fusionnées gênent considérablement, pour contourner le problème, je supprime la fusion juste après le contrôle de la colonne B, et je re-fusionne les cellules en sortie de programme.
            Private Sub Worksheet_Change(ByVal Target As Range)
            'Test pour la colonne B
            If Target.Column = 2 Then
            Target.MergeCells = False
            On Error GoTo Sortie
            If Len(Target.Value) > 35 Then
            MsgBox "Attention le Champ ne doit pas DEPASSER LE CADRE"
            Application.EnableEvents = False
            Target.Value = ""
            Target.Select
            Application.EnableEvents = True
            End If
            ElseIf Target.Column = 8 Then
            If Target.Value = "Couple" Then
            MsgBox "affichage de votre texte"
            End If
            Else: Exit Sub
            End If
            Sortie:
            Target.Resize(1, 3).MergeCells = True
            End Sub
            Essayez et dites-nous si ça fonctionne bien.
            bonne journée
            cdlt
            1. Bonjour, et MERCI pour le temps et le travail que je vous donne il restait un incident si j'efface le mot couple. Un message apparaît
              La sélection contient plusieurs valeurs. La fusion des cellules ne conservera que les données de la cellule supérieure gauche PUIS APRÈS
              Erreur d'exécution'1004':
              Impossible de définir la propriété MergeCells de le classe Range et la ligne
              Target.Resize(1, 3).MergeCells = True se met en jaune
              Après plusieurs essais de toutes sortent j'ai enlevé cette ligne et tout fonctionnent
              Pouvez-vous me dire si cela ne gêne pas .Et me rappeler comment faire pour marquer résolue car je ne trouve pas ou,afin de pouvoir le faire si l'effacement de la ligne ne crée pas de proplème.Pour moi cela fonctionne.
              MERCI MERCI MERCI et encore MERCI
              1. Contributeur
                Re,
                Avant que tu mette résolu (en haut gauche de ta question initiale) voir ce modèle
                * Les colonnes B,C et D peuvent êtres redimensionnées comme ont veut.
                * Les propriétés des cellules, notamment la grandeur Police, peuvent êtres modifiées.
                * Donne toujours la largeur disponible dans la cellule fusionnée.
                * J'aurais préféré employer un TexBox sur la feuille (ou un label) mais les contrôles OCX sur feuille, en Excel, présente beaucoup de bugs incontournable j'ai donc employé un UF.
                * Voir exemple
                Note: les textes déjà écrit ne sont pas tester en cas de redimensionnement de la largueur des colonnes.
                Tu dis.
                A+
                Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
                Note: Je ne répond pas aux MP pour les questions techniques. Et ma boule de cristal est cassée .
                1. Bonsoir, MERCI est un trop petit mot pour te remercier

                  J'ai modifié la grandeur des colonnes tous fonctionne à merveille.
                  Puis je stopper la fonction 'Target.Value = "" si besoin
                  Peux-tu me dire si cela fonctionneras même avec des versions Excel précédente
                  Et si cela est possible quelques explications
                  Tu as fait un travail fantastique je te remercie encore ainsi que toute votre équipe pour ceux que vous faite pour nous.
                  J'ai vue ou il fallait marquer résolue est je le ferais tu peux en être sur

                  micheleliane
                  1. Contributeur
                    Puis je stopper la fonction 'Target.Value = "" si besoin => OUI
                    si cela fonctionneras même avec des versions Excel précédente => Sans problème
                    quelques explications =>
                    Emploi d'un label avec les propriétés
                    => WordWrap = False
                    => AutoSize = True
                    Quand ont met du texte dans le label il prend la largeur du texte, suffit donc de comparer sa longueur à la longueur disponnible.
                    A+
                    Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
                    Note: Je ne répond pas aux MP pour les questions techniques. Et ma boule de cristal est cassée .
                    1. Bonjour à tous et grand MERCI en particulier à lermite222 et Frenchie83

                      Qui on travaille sur ce document, vous m'avez offert mon cadeau de noël

                      Encore MERCI À lermite222 et Frenchie83 ET TOUTE L'ÉQUIPE

                      En effet le peut que je fais et pris pour le plus gros dans le FORUM

                      BONNES FÊTES DE FIN D'ANNÉE.

                      micheleliane
                      1. re Bonjour,

                        Dans mes remerciements et VOEUX de FIN D'ANNÉE JE N'OUBLIE PAS

                        pijaku et michel qui m'ont aidé précédemment