XL 2010 La feuille numéro référentiel menus reste vierge si À modifier = oui

BUDGETS

XLDnaute Impliqué
Bonjour à toutes et à tous,

Qu'il soit bien entendu que je ne demande pas qu'on me fasse un programme. Je veux seulement que celui-ci fonctionne correctement.
1) Si je clique sur Non à la ligne À modifier, les renseignements sortent bien dans la feuille référentiels menus.
2) Si je clique sur Oui à la ligne À modifier, non seulement la feuille Référentiels menus n'est pas mise à jour et aucun renseignement n'apparait dans la feuille Numéro référentiel menus.

Projet 04 - pense bête.xlsm est le fichier qui m'a servi de modèle pour la partie à modifier, en tenant compte des références de mon propre fichier.
D'avance, merci à toutes et à tous pour l'aide que vous voudrez bien m'apporter.
Bonnes soirée et continuation.
 

Fichiers joints

Lone-wolf

XLDnaute Barbatruc
Bonsoir Christian :), le Forum :)

Je ne veux pas mettre la main dans le code mais, je tiens à te dire que beaucoup de chose sont érronées, je te donne 2 exemples

Set Rech_numéro_référentiel_menus = Columns("A:A").Find(What:=Num, After:=Range("A1")
À quoi correspond Num, je ne le vois pas dans la macro.

Ne serait-ce pas plutôt
Set cel = Columns("A:A").Find(What:=Rech_numéro_référentiel_menus, After:=Range("A1")??

If Rech_numéro_référentiel_menus Is Nothing Then
Range("A1").Select
If Range("A2").Value <> "" Then ActiveCell.End(xlDown).Select
ActiveCell.Offset(1, 0).Select
Else
Rech_numéro_référentiel_menus.Select
End If

Pourquoi tu utilise tous ces Select inutiles, quand tu pourrais créer une liste déroulante. Find va te trouver le numéro ne t'en fait pas, sans qu'il aie besoin de sélectionner une à une les cellules. Et si il n'y a pas de numéro, il faut ajouter un message box pour qu'il te dise qu'il ne la pas trouvé.

Voici un exemple

VB:
Sub Créer_Référentiels()
  With shSaisie_Référentiels
  .Range("A1").Value = "Saisie d'un référentiel"
  .Range("B3").Value = shRéférentiels_Menus.Range("AW1").Value + 1
  .Range("B11").Value = "Non"
  '.Range("B4").Select
  End With
End Sub


Dim plage As Range, cel As Range, derlig As Long

If shSaisie_Référentiels.Range("B4").Value = "Desserts" Then

    With shRéférentiels_Menus
        derlig = .Range("a" & Rows.Count).End(xlUp).Row
        Set plage = .Range("a2:a" & derlig)
        Set cel = plage.Find(Num, , xlValues, xlWhole)

        If Rech_numéro_référentiel_menus Is Nothing Then
            cel.Offset(0, 0).Value = Numéro_référentiel_menus
            cel.Offset(0, 1).Value = Titre_référentiel_menus
            cel.Offset(0, 2).Value = Code_article_menu
            cel.Offset(0, 3).Value = Nom_article_menu
            cel.Offset(0, 4).Value = Jour_article_menu
            cel.Offset(0, 5).Value = Conditionnement_article_menu
            cel.Offset(0, 6).Value = Destination_article_menu
            cel.Offset(0, 7).Value = Date_création_article_menu
            cel.Offset(0, 8).Value = À_modifier
            Else
            MsgBox "Le numéro n'est pas dans la liste", , "INFORMATION"
        End If
    End With
End If
Si tu veux utiliser ActiveCell, le plus simple est de mettre le code dans le module de la feuille.

VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Columns("A:A")) Is Nothing And Target.Count = 1 Then
Target.Offset(0, 1).Value = "Salut !"
End If
End Sub
 
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Bonjour Christian :), le Forum :)

Un exemple à mettre dans la feuille de saisie, mais pour mieux faire c'est de remplir toutes les colonnes de la feuille liste, jusqu'à la colonne E (à toi de voir).

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim shListe As Worksheet, Num As Range, derlig As Long, rw

    Application.EnableEvents = False

    Set shListe = Sheets("Liste choix")
    Set Num = Range("b5")

    If Num.Value <> "" Then
            rw = Application.Match(Num.Value, shListe.Columns("A"), 0)
            Range("b6") = shListe.Cells(rw, "B")
            Range("b8") = shListe.Cells(rw, "C")
            Range("b9") = shListe.Cells(rw, "E")
            Range("b10") = Format(Date, "dddd, dd mmmm yyyy")
    End If
    Application.EnableEvents = True

End Sub
Pour les listes, pas besoin de formules, il suffit de sélectionner la colonne de A2 à A xxxx , Formules > définir un nom et tu met "codes" par ex.. Ensuite dans Validation de données > liste tu met =codes.
 
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Re

Ton fichier revu et corrigé. Pour l'utilisation:

Pas besoin de créer un numéro d'avance, il sera incrémenter lors d'un nouvel enregistrement.
Pour rechercher un article, sélectionne son code puis clique sur Rechercher.
Pour modifier, sélectionne le numéro en F4, apporte les modifications puis clique sur Modifier.
Là ce n'est plus la cellule (OUI-NON) qui entre en matière mais un messagebox.
 

Fichiers joints

Dernière édition:

Haut Bas