Message si cellule deja rempli

Bonjour a tous et toutes

Je reviens vous voir car j'ai un petit souci

dans l'userform8 je saisie des données sur la feuille de mon choix (Combobox) le souci est que si la cellule dans lequel je voudrais saisir est déjà rempli ce qui est dedans est écraser.

y as t'il un moyen de mettre un msgbox pour éviter cela ?

je joint mon fichier test (voir userform8).

49planning-test.xlsm (210.69 Ko)

Ps: Et si quelqu'un a une idée pour éviter le message d'erreur au cas ou la feuille n'existe pas je suis preneur .

Merci a tous de votre aide

Bonjour

J'ai personnellement plusieurs message d'erreur à l'ouverture de ton fichier..... mais

pour tester si la cellule est déjà remplie, tu peux utiliser ceci :

If Sheets("toto").Range("B15") <> "" Then
MsgBox ("cellule déjà renplie")
Exit Sub 'ou autre...goto
End If

pour interdire a excel d'afficher les messages d'erreur

Application.DisplayAlerts = False

fred

Bonjour fred2406

déjà merci de ton aide

fred2406 a écrit :

Bonjour

J'ai personnellement plusieurs message d'erreur à l'ouverture de ton fichier.....

cela doit être du a la version Excel je suis sous 2013 et chez moi aucune erreur.

en ce qui concerne ton code

    If Sheets("toto").Range("B15") <> "" Then
    MsgBox ("cellule déjà renplie")
    Exit Sub 'ou autre...goto
    End If

cela ne fonctionne pas

comme je le disait c'est un Userform avec des combobox qui permette de choisir l'onglet et des dtpicker pour choisir le jour et un autre Combobox pour choisir le matin l'aprés-midi ou la journée.

Je souhaitait que quand je valide si la cellule du combobox2 a la dtpiker1 et combobox1 est rempli alors un msgbox s'affiche et pas de saisie effectuer.

Merci en tous cas de ton aide.

Re

en effet j'avais mal lu.... tu voulais travailler sur le userform8....

donc je ne sais pas si cela peu t'aider, et surtout si j'ai bien compris....

je ferais le test avant d'ecrire la valeur :

et donc remplacer

  With Sheets(FeuilleDeTransfert)
        For Each cell In Range(.Cells(LigneDeTransfert, DebutColonneDeTransfert), .Cells(LigneDeTransfert + A, FinColonneDeTransfert))
                cell = ComboBox3.Value
        Next
    End With

par

With Sheets(FeuilleDeTransfert)
        For Each cell In Range(.Cells(LigneDeTransfert, DebutColonneDeTransfert), .Cells(LigneDeTransfert + A, FinColonneDeTransfert))
            If cell.Value = "" Then
                cell = ComboBox3.Value
            Else
                MsgBox ("Erreur donnée déjà presente")
                Exit Sub
            End If

        Next
    End With

a voir donc, difficile de faire des tests ton userform refuse de se lancer sur mon office 2007

fred


EDIT :

on peut faire la boucle deux fois... une pour tester si une donnée est déjà présente dans une des cellules et la deuxième pour écrire

car que doit-il se passer quand une des cellules cible est occupée, on écrit sur les autres quand même ou rien ne doit etre écrit ???

Merci fred2406

c'est bon cela fonctionne

et en ce qui concerne le message d'erreur sur la sélection du mois tu as une idée.

MERCI

Bonjour

ce que j'ai dis plus haut :

pour interdire a excel d'afficher les messages d'erreur

Application.DisplayAlerts = False

mais si la feuille n'existe pas que faire ??? message d'erreur, la feuille est créée ???

sinon voici une petite fonction qui teste si une feuille existe....

Function FeuilleExiste(nom As String) As Boolean
  On Error Resume Next
  FeuilleExiste = sheets(nom).Name <> ""
  On Error GoTo 0
End Function

Fred

Merci Fred

Je doit mal m'y prendre car cela ne fonctionne pas j'ai toujours une erreur

je sélectionne l'onglet suivant une liste (janvier,Février,etc....) mais les feuilles sont créer une fois par mois .

Dans le combobox je sélectionne le mois (mars en ce moment ) mais si je sélectionne Avril c'est la que j'ai mon message d'erreur.

capture

voici le code de mon combobox

Private Sub ComboBox2_Click()

Dim Feuille As String

If ComboBox2.Value <> "" Then

    Feuille = ComboBox2.Value

    Worksheets(Feuille).Select

   End If
End Sub

stef

Re

Et pour cause tu ne peux pas sélectionner une feuille qui n'existe pas.....

d'ou mon message précédent qui te posait la question :

mais si la feuille n'existe pas que faire ??? message d'erreur, la feuille est a créer ???

quand tu as sélectionné le nom d'une feuille il faut vérifier que la feuille existe avec par exemple la fonction que je t'ai donnée dans mon dernier message.... ensuite en fonction de ta réponse a la question précédente on pourra faire quelque chose....

fred

Re Fred

mais si la feuille n'existe pas que faire ??? message d'erreur, la feuille est a créer ???

Il serait bien d'avoir un message genre" Feuille inexistante" et que l'on puisse soit ré-selectionner une feuille

Désoler j'avais sauter une ligne

Merci de ton aide

remplace ta private sub combobox2_click par celle ci avec en plus la fonction que je t'ai donnée précédemment :

Private Sub ComboBox2_Click()
Dim Feuille As String
If ComboBox2.Value <> "" Then
    If FeuilleExiste(ComboBox2.Value) Then
    'Feuille = ComboBox2.Value
        Worksheets(ComboBox2.Value).Select
    Else
        MsgBox ("La feuille : " & ComboBox2.Value & " n'existe pas...")
   End If
   End If
End Sub
Function FeuilleExiste(nom As String) As Boolean
  On Error Resume Next
  FeuilleExiste = Sheets(nom).Name <> ""
  On Error GoTo 0
End Function

Fred

Super

Un gros merci a toi

Maintenant je vais regarder cette macro pour en apprendre encore plus

MERCI FRED

Rechercher des sujets similaires à "message deja rempli"