Remplir cellule vide et nom des onglets >31 caractères

Bonjour à tous,

Sur le fichier joint, j'aurais 2 questions:

* j'aimerais si les cellules C4 et/ou D4 ne sont pas renseignées par l'utilisateur quand il ferme le classeur :

- qu'un message lui signale que "certaines cellules sont vides et seront remplies par "Inconnu""

- que s'il clique sur ok, que les cellules C4 et D4 des feuilles concernées soient rempli par "Inconnu"

- que si je clique sur annuler, que seules les feuilles comportant des cellules vides soient affichées (en plus de la feuille Menu) et que les cellules vides soient colorées.

J'ai ce code qui fonctionne très bien mais le reste de ma requête est bien supérieur à mes faibles connaissances...

       If Cells(4, 4).Value = "" Then Cells(4, 4).Value = "Inconnu"
        End If

* les noms des onglets étant limités à 31 caractères, j'aimerais savoir s'il est possible lorsque le nom dépasse cette limite que les 3 derniers caractères soient remplacés par ...

Merci encore de votre aide !!

Bonne soirée

Amicalement

Bonjour à tous, bonjour Walden,

alors pour spécifier que ce code doit être exécuté à la fermeture du classeur, tu vas dans la barre de gauche dans Visual studio :

tu sélectionnes ThisWorkbook, tu l'ouvres. En haut, à la place de Général, tu sélectionnes Workbook et à droite tu auras open normalement sélectionné, tu choisis BeforeClose

et dans la sub qui s'est crée en dessous, tu entres ton code amélioré, du style :

Private Sub Workbook_BeforeClose(Cancel As Boolean)

For j = 1 To Sheets.Count
    If Sheets(j).Cells(4, 4).Value = "" Then

        d = MsgBox("certaines cellules sont vides et seront remplies par " & Chr(13) & "Inconnu" & Chr(13))
            If d = 1 Then
                Sheets(j).Cells(4, 4) = "Inconnu"
            End If
            If d = 2 Then
                For i = 1 To Sheets.Count
                    If Sheets(i).Cells(4, 4) = "" Then
                        With Sheets(i).Cells(4, 4)
                            .Color = ga
                        End With
                    Else
                        Sheets(i).Visible = False
                    End If
                Next i
            End If
     End If
Next j

End Sub

Désolé, ce n'est qu'une piste parce que je suis assez pressé, mais en gros il faudrait faire ton test sur test feuille et définir un booléen que tu changes pour afficher le message et ensuite tu fais la partie après le msgbox en utilisant le cancel du BeforeClose!

Et c'est pas 13 pour les guillemets dans la fonction Chr, google it t'auras plus d'infos!

Voilà, je repasserai pour voir où ça en est!

Bonne continuation!

ReuK

Bonjour Reuk, le forum,

Merci beaucoup pour ce code qui fonctionne parfaitement, mais je me rends compte que ce que j'ai demandé n'est pas la solution idéale pour mon projet... Mea culpa.

Je pense qu'il serait plus judicieux d'obliger la saisie des infos en B4, C4 et D4 avant de passer au remplissage d'autres cellules. avec une msgbox signalalnt à l'utilisatezur cette obligation et la possiblité d'entrer inconnu en cas de doute.. L'ordre de remplissage peut être dans n'importe quel ordre.Qu'en pensez-vous,

Merci

Bonne journée

Amicalement

Re-,

en cherchant.... J'ai résolu cette partie de mon problème en passant par option/Validation !

Reste mon problème de renommage d'onglet... Comme je l'ai expliqué précédemment, je laisse la possibilité à l'utilisateur d'indiquer "Inconnu" en C4 ou D4, mais est-il possible d'incrémenter cet "inconnu" en "inconnu (2)", "inconnu (3)".. pour éviter que ma commande plante :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.Name = "Type " & [C4] & " - Lot " & [D4]
End Sub
'

Exemple en pj !

Bonne journée,

Amicalement

Bon j'avance petit à petit et je me rends compte de mes erreurs..

La formule validation fonctionne bien mais n'est malheureusement pas suffisante, puisque limitée à quelques cellules...

Ma demande formulée plus haut :

Je pense qu'il serait plus judicieux d'obliger la saisie des infos en B4, C4 et D4 avant de passer au remplissage d'autres cellules. avec une msgbox signalalnt à l'utilisateur cette obligation et la possiblité d'entrer inconnu en cas de doute.. L'ordre de remplissage peut être dans n'importe quel ordre

reste donc d'actualité.

Je pensais à un code approchant:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If Range("B4").Value = "" Then
            Range("B4").Select
            MsgBox "remplir la cellule  B4 svp", vbOK
        End If
End Sub

Mais je ne sais pas comment l'étendre aux 2 autres cellules (c4 et d4) et permttre le remplissage de ces 3 cellules dans un ordre ou un autre....

Désolé de revenir sur mes questions mais j'essaie de trouver par moi-même, même si bien souvent je me trompe...

Bonne journée,

Amicalement

Rechercher des sujets similaires à "remplir vide nom onglets caracteres"