VBA : je n'y connais rien...

  • Initiateur de la discussion Marie
  • Date de début
M

Marie

Guest
Bonjour à tous,

J'ai joins mon fichier afin de mieux me faire comprendre...

1. J'aimerais pouvoir grâce à un bouton (filtre), effacer les lignes pour lesquelles la date mentionnée dans la colonne I (Retour) est dépassée de 60 jours.

2. J'aimerais créer un compteur pour chaque nouvelle entrée dans le tableau soit automatiquement à l'introduction d'une ligne, soit en cliquer sur le bouton compteur afin de savoir le nombre de demandes introduites dans le tableau. Le compteur ne doit pas tenir compte des suppressions automatiques.

3. J'aimerais faciliter l'encodage de nouvelles données : est-ce plus simple de créer un formulaire de saisie ou de se déplacer en tabultant dans le tableau ?

Merci d'aider une novice en excel
Marie

PS : pour Thierry, Dan, Dugenou ou les autres, ça me permet de résumer tout ce que je voudrais... Et merci de m'avoir déjà répondu
 

Pièces jointes

  • pret.ZIP
    23.7 KB · Affichages: 21
  • pret.ZIP
    23.7 KB · Affichages: 18
  • pret.ZIP
    23.7 KB · Affichages: 20
P

patrice

Guest
Bonjour à tous,
Une petite adaptation.
Je n'ai pas fait le compteur.
Pour le filtre, je suppose que tu voullais effacer les infos et pas supprimer la ligne.
A+
 

Pièces jointes

  • download.ZIP
    35.6 KB · Affichages: 33
  • download.ZIP
    35.6 KB · Affichages: 28
  • download.ZIP
    35.6 KB · Affichages: 28
M

Marie

Guest
Bonjour Patrice et tous les autres,

Merci d'avoir planché sur mon projet. Cela l'améliore beaucoup mais le filtre provoque une erreur d'exécution de type "13"???

Concernant ce dernier je souhaitais que la ligne soit réellement supprimée et pas le contenu effacé.

Ton formulaire de saisie est très intéressant mais la tabulation à l'intérieur "oublie" des "textbox" ??
Je vais essayer de comprendre tes codes (et c'est pas rien pour moi qui débute...)
Grand merci
Bonne journée
Marie
 
P

patrice

Guest
Bonjour Marie et au Forum,
Pour le filtre à remplacer :

' pour toutes les lignes avec auteur renseigné
While Range("B" & i) <> ""
If Range("I" & i) <> "" Then ' si date renseignée
If Range("I" & i) + 30 < D Then
Rows(i & ":" & i).Delete Shift:=xlUp ' supprime
End If
Else
i = i + 1
End If
Wend

Pour les tab dans les propriétés et pour chaque combo ou textbox, il faut changer la valeur de l'option : TabIndex qui te donne l'ordre des tabulation :
= 1 pour la 1' selection, touche Tab selection l'index 2 et ainsi de suite.

A+
 
P

patrice

Guest
Re,
Réponse un peu rapide pour le filtre. La faim m'empèche de réflechir.

While Range("B" & i) <> ""
If Range("I" & i) <> "" Then
If Range("I" & i) + 30 < D Then
Rows(i & ":" & i).Delete Shift:=xlUp
Else
i = i + 1
End If
Else
i = i + 1
End If
Wend
A+
 
M

Marie

Guest
Salut Patrice et le forum,

J'espère que tu n'as pas eu de problème de digestion.
Le filtre est OK et les tabultations dans le useform aussi.

MAgnifique, que rêver de mieux...
Et si...

Est-ce qu'il serait possible que le CommandButton "OK" du Useform soit lié à une commande de "compteur" pour qu'à chaque fois que ok est validé un compteur ajoute 1 à N??

Pour apprendre, qu'est-ce que signifie cette "programmation"
Dim L As String
Dim i As Integer

Vous êtes tous fantastiques...

Merci
Marie
 
P

patrice

Guest
Re,
En début de module ou de UserForm, si on met l'instruction "Option Explicit" il faut définir à VB toutes les variables par "Dim" sinon erreur
l'indication "As String" dit que "L" est defini en caractère et "As Integer" est du numérique de -32 xxx à + 32 xxx le chiffre n'echappe.
Une astuce : sélectionne (en bleu) avec la souris le nom "Dim" et appuie sur F1 => aide VB, tu auras toutes les infos.

Pour le compteur, dans le "Private Sub OKButton_Click" avant le End Sub tu ajoutes :
TheNum = Sheets("Demande").Range("A1")
TheNum = TheNum + 1
Sheets("Demande").Range("A1") = TheNum
Ne pas oublier "Dim TheBum As Integer" en dessous de Private ...

A+
 
M

Marie

Guest
C'est mon jour de chance on dirait§
Merci Patrice,
Pour le compteur un message d'erreur est indiqué : erreur de compilation, variable non définie et il surligne ta ligne de programmation suivante :
TheNum = Sheets("Demande").Range("A1")

Moi pas comprendre
Je vous rassure tous, je vais me procurer un manuel de VB pour connaître au moins le BEA-BA.

Merci encore
Marie
 
M

Marie

Guest
Bonjour à tous et à Myta en particulier...
Merci oui, ce n'était qu'une erreur de retranscription et le compteur fonctionne bien.
Merci

J'ai encore un petit souci avec le formulaire créé par Patrice :

J'ai changé l'ordre de priorité des textbox et lorsque je complète la textbox placée en tête de mon formulaire(cote), le contenu s'efface dés que je passe à la combobox suivante (auteur). Pourquoi ??

Par ailleurs, lorsque je veux remplir la combobox Auteur avec la lettre S uniquement, il m'affiche une erreur de type 380 : impossible de définir la propriété Listindex. Valeur de propriété non valide .

Le débogage surlinge la commande suivante :
ComboBox2.ListIndex = 0 ' affiche le 1' titre

Si vous savez déchiffrez sinon je joindrai le nouveau fichier actualisé.
Merci, merci beaucoup
 
S

Sébasten

Guest
Comment ajouter du code dans un commandbutton

bonjour à tous

je voudrai ajouter du code dans un commandbutton crée à partir d'excel vba situé dans une sheet


voila ce que je fais

Dim OLEObj As OLEObject
Dim ws As Worksheet

Set ws = Worksheets(activesheet.name)
'
'Créaton du bouton
'
Set OLEObj = ws.OLEObjects.Add(classtype:="Forms.CommandButton.1", Left:=362, Top:=23, Width:=87, Height:=20)
OLEObj.Name = "Cmd_Effacer"
OLEObj.Object.Caption = "Effacer la Feuille"
OLEObj.Object.Click = code


merci de me répondre rapidement, urgent
 

Discussions similaires

Réponses
21
Affichages
516

Statistiques des forums

Discussions
312 684
Messages
2 090 916
Membres
104 697
dernier inscrit
Pierrot Hubert