Vérifier le contenu de 2 colonnes avant d'insérer

Bonjour

Petit nouveau sur votre site, je débute dans le VBA, en m'aidant surtout de tout ce que je trouve sur les forums.

Je ne décrypte pas tout le langage, mais bon je progresse, malgré tout j'ai encore beaucoup de mal à construire du code sans un exemple.

Donc voici mon problème don je ne trouve pas la solution idéale.

J'utilise un userform avec plusieurs listes déroulantes, qui une fois remplies vont remplir des cellules dans une feuille de calcul qui peut être différente en fonction du choix d'une des listes déroulantes. (jusque la ça va)

Ce que j'aimerai c'est que avant que ça remplisse la dernière ligne de mon tableau (qui ce met en forme automatiquement), il puisse y avoir une vérification que 2 des données du userform n'existe pas déjà dans les deux colonnes correspondantes (séparé par d'autres colonnes) dans la feuille sélectionné.

J'y arrive pour une colonne, mais pas pour deux:

Les deux colonnes concernées sont une date associé a une valeur texte.

Et je veux verifier que cette valeur texte a une date précise, n'a pas déjà était crée, et que si c'est le cas que ça revienne a mon userform pour modification.

Voilà, je sais pas si qq à une solution à me proposer.

Merci d'avance.

Bonjour et bienvenue sur le forum

babastioun a écrit :

je sais pas si qq à une solution à me proposer.

Sans fichier joint, il sera difficile de te proposer quelque chose...

Bye !

Effectivement gmb, ça sera plus facile avec un exemple.

Donc voilà qui est fait.

Vous verrez dans l'exemple la feuille nommée C1 a deux dates et sous compétences identiques, chose qui ne peux pas arriver.

Donc en cas d'erreur humaine de saisie, comment je peux éviter que ça vienne dans le tableau.

Je joint un fichier light, sachant que l'original compte 13 feuilles de compétences.

J'espère que cela vous permettra de mieux vois ce que je cherche.

Je vous remercie d'avance.

27demo.xlsm (67.21 Ko)

Je remet un petit message, afin de faire remonter mon post, mais il semble pas y avoir beaucoup de réponses à ce sujet !

Est ce quelque chose d’impossible ? Ou bien alors je n'ai peut être pas réussi a bien expliqué mon problème ?

Je vous remercie d'avance si vous avez des pistes.

Décidément, mes sujets on l'air de rester sans solutions ou sans réponses.

Bon je remarque aussi que les posts défilent à grande vitesse, donc peut être que peu de monde on eu le temps de le voir....

Bref, ce sujet et en double avec un exemple différent de l'autre sujet.

Si toutefois qq'un a le temps de si pencher ?

Merci d'avance

Au secours à l'aide !!!!!!

Personne n'a une idée comment résoudre mon problème, ou bien me donner un coup de main ????

Bonjour

Je voudrais bien essayer de t'aider mais je ne comprends pas tes explications...

Bonjour, déjà merci de prendre un peu de ton temps pour regarder mon problème.

Donc je vais essayer de mieux m'expliquer.

Dans le fichier que j'ai joint,

Dans la feuille "relevé de compétences", quand je clic sur "ajouter une nouvelle compétence au livret"

un userform s'ouvre, je le rempli à l'aide des listes déroulantes et j'attribue une lettre d'évaluation. (jusque la c'est bon)

Quand c'est rempli je clic sur ok et les valeurs vont remplir un tableau (qui ce met en forme automatiquement) dans une feuille qui peut être différente en fonction du choix de la compétence.(feuille C1, C2, ou C...... il y en a 13 au total)

Mon soucis c'est que j'aimerai pouvoir vérifier que la sous-compétence évalué à la date n'existe pas déjà dans le tableau (c'est a dire qu'il ne peut pas y avoir deux fois la sous compétence évalué à la même date) en cas d’erreur de saisie.

Et donc en cas ou cela arriverai que ça me renvoie au userform avec un message du type "sous-compétence déjà évalué à cette date" afin de pouvoir modifier avant saisie.

Voilà je sais pas si j'ai mieux expliqué mon problème ?

En tout cas merci.

Un essai à tester.

Je n'ai pu faire aucun test moi-même car Dtpicker ne marche pas sur mon PC.

Bye !

25demo-v1.xlsm (66.07 Ko)

Merci pour ton aide.

Donc dans le fichier que tu as renvoyé, j'ai remis le DTpicker, et ensuite j'ai essayé, mais il me met un message d’erreur.

J'ai mis une capture d'écran en pièce jointe.

Donc avec l'aide j'ai trouvé qu'il manquait "end if " après "exit sub" (si j'ai bien compris)

Mais après avoir fait cela je n'ai plus le message d'erreur mais il ce passe rien quand je clic sur validé.

Et la je comprend plus ce qu'il passe !!!

Est ce que tu peux regarder si tu trouves pourquoi ?

Merci

capture

Hou ! La ! La !

La honte !

Corrige-la vite en ajoutant le'' End If'' ou en reprenant le nouveau fichier.

        'no_ligne = N° de ligne de la dernière cellule non vide de la colonne +1
        no_ligne = Range("A65536").End(xlUp).Row + 1

        'Contrôle des double sous-compétences
        For Ln = 2 To no_ligne
            If ComboBox3.Value = Cells(Ln, "C").Value _
                    And dtpicker1.Value = Cells(Ln, "A").Value Then
                MsgBox "Il y a déjà cette sous-compétence à la date " & dtpicker1.Value & " à la ligne " & Ln, 16
                Exit Sub
            End If
        Next Ln

        'Insertion des valeurs sur la feuille
13demo-v2.xlsm (61.20 Ko)

Encore merci pour cette aide.

Malheureusement cela ne fonctionne pas.

Quand je clic sur "valider" de l'userform après avoir renseigné tous les combobox il ne se passe rien mis à part la sélection de la feuille C1.

Comme tu n'as pas le DTpicker je vais essayer de refaire le fichier demo avec simplement un combobox de date et je vais le remettre en pièce jointe.

A plus

Donc voila le fichier demo d'origine sans le DTpicker, mais une liste de dates à la place.

10demo.xlsm (64.52 Ko)

Bonsoir

Une réponse avec ton fichier et le DtPicker

Bonjour

Je n'ai qu'un mot à dire excellent, c'est formidable de voir que ça marche à merveille.

Un grand merci a vous deux.

Par contre j'avoue que je ne comprend pas tout ce qu'il y a dans code, comme quoi mon niveau est pas très élevé.

Si par hasard vous avez un peu de temps dans le futur pour me traduire les codes afin de mieux comprendre le fonctionnement, je suis preneur.

Alors encore merci pour votre aide a tout les deux.

A la prochaine.

Encore moi.

Donc voilà j'ai tout réinséré dans mon fichier complet.

Suite à ça j'ai rencontré un soucis, c'est que les données du userform venaient s'insérer uniquement à la première ligne du tableau concerné.

Pour qu'il insère à la dernière ligne il fallait impérativement sélectionner la feuille concerné avant de cliquer sur valider.

Donc j'ai rajouter le code suivant 13 fois (parce que j'ai 13 feuilles)

If Me.CbbCompetence = "nom de la feuille" Then ' => SI condition validée ALORS

Sheets("C1").Select 'Instructions si vrai

Else ' => SINON

'Instructions si faux

End If

Et donc la ça fonctionne.

Alors ma question est, il y a t'il moyen d'éviter 13 fois ce code et que cela s'insère à la dernière ligne du tableau de la bonne feuille ?

Ceci dit comme ça marche bien comme ça, c'est plus une question pour info, maintenant c'est seulement si vous avez le temps.

Je vous remercie

A plus

Bonjour

babastioun a écrit :

il fallait impérativement sélectionner la feuille concerné

hemmm il manque un . (point) devant le Range(...

Modifies la ligne correspondante

      'no_ligne = N° de ligne de la dernière cellule non vide de la colonne +1
      No_Ligne = .Range("A" & Rows.Count).End(xlUp).Row + 1
babastioun a écrit :

y a t'il moyen d'éviter 13 fois ce code

Le code que j'avais utilisé n'est pas bon ?

Au la vue de tes 2 pages, j'en avais déduit que le nom de la page c'était le nom sélectionné sans le _ (underscore)

Indiques mois la logique à suivre

babastioun a écrit :

traduire les codes

Quelques commentaires dans le code (juste pour la recherche)

Bonjour

Alors, voilà c'est bon il manquais bien juste un point devant "range", comme tu me l'as dit Banzai64.

Depuis que je l'ai rajouté plus besoin de sélectionner la feuille, et donc plus besoin de 13 fois le code.

Donc pour moi tout est ok sur ce sujet.

Merci pour les explications des codes que tu as écrit (maintenant faut que je les épluche pour bien les comprendre)

Pour moi le sujet et résolu, et encore merci a tous pour votre aide.

A plus

Rechercher des sujets similaires à "verifier contenu colonnes inserer"