Formulaire qui rempli des cellules specifique

En faite cette feuil Client et Prospect, ne cesse de grandir chaque jour.

et l'ideal c'est que dans la liste déroulante du formulaire je puisse avoir accès au nouveau clients inscris dans la colonne A

Actuellement mon tableau va jusqu'à A103

Quand je vais rajouter 1 client ou 1 prospect je serais à A104.

Et en enlevant le -1 ca fonctionne, le client en A104 apparait bien.

Par contre en remettant le -1 il n'apparait plus.

Bonjour,

Chez-moi, une recette ou l'autre, donne le même résultat et fonctionne à merveille.

Gelinotte

Ne racontez pas de sottises !

Prière de relire avec attention mon post précédent.

Le problème c'est cette ligne 2 vide dans cette démo et dont je ne sais pas à quoi elle sert... et qu'il faudrait supprimer !

Si la ligne 2 n'existe pas ou si elle est remplie mon code initial est valable

Si la ligne 2 existe et qu'elle est vide alors il faut modifier comme j'ai indiqué en second lieu. Mais on ne lance pas une affirmation comme ça au hasard.

Si vous l'utilisez à contre sens, vous ne verrez peut-être pas la différence (parce que vous n'utilisez le combo qu'à 1% de ses possibilités, mais le jour ou on voudra améliorer un peu l'existant : Qui c'est qui va passer une journée à ce demander pourquoi ce foutu Combo ne marche pas ?

A+

Bonjour

OH! OH! Il galope ... c'est en galopant qu'on devient galopin

Gelinotte

Bonjour galopin01,

Désolé pour la vanne, mais tu t'es fâché en premier

Je ne suis pas bon en formule, je ne veux, ni ne peux donc pas te contre dire.

J'apprends en essai/erreur ... je ne sais qu'adapter du code que les gens ont composé. Je suis incapable de coder sans mon ami Google qui bavasse tout ce que vous laissez à la traine sur le Net.

Merci pour ton savoir ... en passant, j'ai adoré l'image

Gelinotte ...

P.s. avec mon pseudo, tu peux de faire une idée de la taille de mon cerveau ...

Alors j'ai supprimer la ligne 2 je ne sais plus à quoi elle servait

Le seul code qui fonctionne c'est =DECALER('Client et Prospect'!$A$1;1;;NBVAL('Client et Prospect'!$A:$A))

Avec ce code si je rajoute un contact dans ma feuille Client et Prospect, je le voit apparaitre immediatemement dans la liste deroulante.

Par contre si je met ce code là =DECALER('Client et Prospect'!$A$1;1;;NBVAL('Client et Prospect'!$A:$A)-1)

je ne retrouve aucun des nouveaux clients.

Bonjour,

As-tu bien "supprimé" la ligne 2 ?? ... pas masqué.

Ici, une fois la ligne 2 supprimée, la formule de galopin01 fonctionne bien.

Gelinotte

celle ci? =DECALER('Client et Prospect'!$A$1;1;;NBVAL('Client et Prospect'!$A:$A)-1)

J'ai bien supprimer la ligne 2

en 1 j'ai les titres du tableau et en 2 j'ai le premier client.

Decidement ca fonctionne pas avec la formule ci-dessus.

Par contre avec =DECALER('Client et Prospect'!$A$1;1;;NBVAL('Client et Prospect'!$A:$A)) ca fonctionne.

Je comprend plus

Je viens de retester, ca fonctionne avec la formule de galopin.

Merci à tous les deux


Allez je pense derniere question sur ce projet

Quand je met par exemple 2 dans nbr de radar supp, si je coche la case, ca m'inscris bien la ligne dans le devis, mais pas le nombre.

Pour que ca m'inscrive le nombre, il faut que j'inscrire le nbr, puis ensuite je fait generer devis, et ensuite je coche la case.

serais t-il possible d'inverser le truc.

C'est a dire, je rentre le nbr, je coche, puis je genere le devis.

Bonjour,

Oui, je vois où c'est. Dès que j'ai une minute ....

Gelinotte

C'est cool merci bcp

Bonjour,

Ce fut plus simple que je l'eusse cru.

Gelinotte

Dim a(), b()

Private Sub TraiterCheckBox()
  If Me.CheckBox1 = True Then
    Sheets("Devis").CheckBox1 = True
  Else
    Sheets("Devis").CheckBox1 = False
  End If

  If Me.CheckBox2 = True Then
    Sheets("Devis").CheckBox2 = True
  Else
    Sheets("Devis").CheckBox2 = False
  End If

  If Me.CheckBox3 = True Then
    Sheets("Devis").CheckBox3 = True
  Else
    Sheets("Devis").CheckBox3 = False
  End If

  If Me.CheckBox4 = True Then
    Sheets("Devis").CheckBox4 = True
  Else
    Sheets("Devis").CheckBox4 = False
  End If

  If Me.CheckBox5 = True Then
    Sheets("Devis").CheckBox5 = True
  Else
    Sheets("Devis").CheckBox5 = False
  End If

  If Me.CheckBox6 = True Then
    Sheets("Devis").CheckBox6 = True
  Else
    Sheets("Devis").CheckBox6 = False
  End If
End Sub

Private Sub CmdButtonAnnuler_Click()
  End
End Sub

Private Sub CmdButtonGenererDevis_Click()

With Sheets("Devis")
  .[K6] = Me.TextBox1
  .[K7] = Me.TextBox2
  .[K8] = Me.ComboBoxClients
  .[C20] = Me.ComboBoxTypeProtection.Value  ' à revoir
  .[L15] = Me.TextBox13                ' remplacer XXXX par l'adresse où écrire dans la feuille DEVIS
  .[M10] = Val(TextBox3)
  .[L16] = Val(TextBox12)
  .[L17] = Val(TextBox14)
  .[L18] = Val(TextBox9)
  .[L19] = Val(TextBox10)
  .[J23] = Me.TextBox4
  .[J25] = Me.TextBox5
  .[m21] = Me.TextBox11
End With

TraiterCheckBox

End Sub

Private Sub UserForm_Initialize()
  a = [ListClient].Value
  Me.ComboBoxClients.List = a
  Me.ComboBoxClients.MatchEntry = 2
  b = [kitbase].Value
  Me.ComboBoxTypeProtection.List = b
End Sub

Private Sub ComboBoxClients_Change()
  tmp = UCase(Me.ComboBoxClients) & "*"
  Set MonDico = CreateObject("Scripting.Dictionary")
Debug.Print tmp
  For Each c In a
    If c Like tmp Then MonDico(c) = ""
  Next c
  Me.ComboBoxClients.List = MonDico.keys
  Me.ComboBoxClients.DropDown
End Sub

merci bcp qu'à tu modifier, que je sache pour le futur

Bonjour,

C'était une série de 6 macros indépendantes exemple : CheckBox1_Change

J'en ai fait une seule : TraiterCheckBox

Puis à la fin de ButtonGenererDevis_Click, j'ai simplement ajouté le nom de cette nouvelle macro. Car, via un macro, on peut appeler d'autres macros en sous-routine.

Gelinotte

Merci c'est super cool.

J'ai besoin qu'à l'ouverture du formulaire, la macro suivante s'active.

Sub devisvierge()
Sheets("Devis").CheckBox1 = False
Sheets("Devis").CheckBox2 = False
Sheets("Devis").CheckBox3 = False
Sheets("Devis").CheckBox4 = False
Sheets("Devis").CheckBox5 = False
Sheets("Devis").CheckBox6 = False
Range("K6:N6").Select
    Selection.ClearContents
    Range("K7:N7").Select
    Selection.ClearContents
    Range("K8:N8").Select
    Selection.ClearContents
    Range("J23").Select
    Selection.ClearContents
    Range("J25").Select
    Selection.ClearContents
    Range("M21").Select
    Selection.ClearContents

End Sub

où dois-je ecrire le nom de la macro soit : devisvierge

Bonjour,

À l'ouverture du UserForm ... il .... s'initialise ... ça là qu'il faut placer le code "préparatoire" à l'affichage du UserForm ... si code préparatoire on a à faire exécuter ....

Donc dans Private Sub UserForm_Initialize() ... à la fin ce sera bien ... ce code n'a pas d'incidence sur le code déjà présent.

Gelinotte

Magnifique ca fonctionne, tu es au top !!

Je passe le post en resolu !!

merci à vous. pour ces infos qui m'aide et qui m'apprenne

Bonjour,

Je ne me suis pas penché sur ce problème particulier ... pourquoi l'une et pas l'autre ...

Mais, si certains calculs affichent #valeur! ... on peut traiter l'erreur ainsi :

=SIERREUR((F20+F25+F26+F27+F28+F29+F30);"")

Dans le cas de la plage H31: H34 ... seul H31 à besoin de gérer l'erreur ... les autres dépendent de H31.

N'oublie pas que Google est ton ami ...

Gelinotte

BOnsoir tous le monde, bonsoir Galopin,

+ j'utilise le formulaire "cité en fin de post" dont tu m'à énormément aidé à mettre en place avec l'aide de gerlinotte et + j'adore. merci encore a vous tous et à excel-pratique.

Cependant il me reste une seule question pour juste agrandir mes connaissances et pouvoir les mettres en application.

Dans le formulaire, tu as mis dans la ComboBoxClients un code qui permet d'afficher la liste au fur et a mesure de la saisie.

Private Sub UserForm_Initialize()
  a = [ListClient].Value
  Me.ComboBoxClients.List = a
  Me.ComboBoxClients.MatchEntry = 2
  b = [kitbase].Value
  Me.ComboBoxTypeProtection.List = b
End Sub

Private Sub ComboBoxClients_Change()
  tmp = UCase(Me.ComboBoxClients) & "*"
  Set MonDico = CreateObject("Scripting.Dictionary")
Debug.Print tmp
  For Each c In a
    If c Like tmp Then MonDico(c) = ""
  Next c
  Me.ComboBoxClients.List = MonDico.keys
  Me.ComboBoxClients.DropDown
End Sub

Comment puis-je faire sur une autre feuille la meme chose mais sans formulaire, juste besoin d'ecrire en A1 et C5 et obtenir le meme resultat au fur et a mesure que j'ecris.

Merci d'avance pour votre aide.

galopin01 a écrit :

bonsoir,

ça ne se passe pas comme ça ! Un formulaire n'est pas une feuille de calcul.

YAPA de formule de validation de données pour les Combos de Formulaire.

Pour autant je comprend ce que tu veux (Des listes intuitives avec des combos qui se réduisent au fur et à mesure en fonction des premières saisies...)

J'ai donc fait à ma façon... Pour cela j'ai du créer dans le Gestionnaire de Nom un Range nommé [ListClient] (parce que les noms existant ne convenaient pas)

Voir Fichier joint.

bonjour Pouns94, galopin, Gelinotte et le forum

voici un classeur ou tu peux voir le fonctionnement du combobox sur feuille pour inscrire les clients

autrement as tu vu la dernière réponse de ce post https://forum.excel-pratique.com/excel/bouton-si-cellule-rempli-t78576.html

Merci grisan,

mais sur cet exemple, ca ne propose pas les noms des clients si je tape seulement une lettre.

tandis que sur l'exemple que j'ai cité dans mon post precedent, des que je tape une lettre il me propose la liste.

Rechercher des sujets similaires à "formulaire qui rempli specifique"