Aide pour comprendre le language VBA
Résolu
celinetimothe
Messages postés
34
Statut
Membre
-
Lucass265 Messages postés 1 Statut Membre -
Lucass265 Messages postés 1 Statut Membre -
Bonjour,
J'ai trouvé sur un autre forum un fichier qui reprend exactement ce que je souhaite créer... Le problème c'est que c'est en programmation VBA... et je ne comprends pas...
J'ai essayé mais çe ne donne rien...
Pouvez-vous m'aider ?
Je suis débutant dans la programmation VBA...
D'avance merci,
Céline
J'ai trouvé sur un autre forum un fichier qui reprend exactement ce que je souhaite créer... Le problème c'est que c'est en programmation VBA... et je ne comprends pas...
J'ai essayé mais çe ne donne rien...
Pouvez-vous m'aider ?
Je suis débutant dans la programmation VBA...
D'avance merci,
Céline
A voir également:
- Aide pour comprendre le language VBA
- Excel compter cellule couleur sans vba - Guide
- Dépassement de capacité vba ✓ - Forum Excel
- Find vba - Astuces et Solutions
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Vba ouvrir un fichier excel avec chemin ✓ - Forum VB / VBA
7 réponses
Hello Céline,
Quelle genre d'aide tu désires exactement? Si c'est pour t'expliquer le code que tu as trouvé, ça pourrait être utile de le voir.
Quelle genre d'aide tu désires exactement? Si c'est pour t'expliquer le code que tu as trouvé, ça pourrait être utile de le voir.
Oui c'est pour m'aider à les comprendre....
Ce que je souhaites faire c'est un questionnaire ou mes interviewes repondent sur le fichier et en validant leur questionnaire, les informations sont automatiquement stocké en feuille 2...
Voici la liste de code que j'ai :
Ce que je souhaites faire c'est un questionnaire ou mes interviewes repondent sur le fichier et en validant leur questionnaire, les informations sont automatiquement stocké en feuille 2...
Voici la liste de code que j'ai :
Option Explicit
Sub purge()
Sheets("base").Activate
Application.EnableEvents = False
Range([ax10], [b65536].End(xlUp)).ClearContents
Range("b10") = 0
Call initialise
End Sub
Sub Stat()
Sheets("Stat").Activate
Range("b4").Activate
End Sub
Sub AfficherTout()
Application.ScreenUpdating = False
With Sheets("base")
.Activate
.Rows(8).ClearContents
.Rows(9).Hidden = True
On Error Resume Next
.ShowAllData
On Error GoTo 0
.Application.Goto Range("a10"), Scroll:=True
.Range("b8").Activate
End With
Application.EnableEvents = True
End Sub
Sub NouvFiche()
Application.ScreenUpdating = False
Range("BASE!B8:AX8").ClearContents
With Sheets("Fiche")
.Activate
.Range("h14:h47").ClearContents 'cases
.Range("c9:c14").ClearContents 'arrivée + liste
.Range("f7:f11").ClearContents 'Nom Prénom + NIR
.Range("b50:h56").ClearContents 'commentaires
.Range("h3") = Range("base!b65536").End(xlUp) + 1 'compteur N° Fiche
.Range("c3") = Date
End With
End Sub
Sub initialise()
Dim DerLig As Long
DerLig = Cells.Find("*", , , , xlByRows, xlPrevious).Row + 1
Application.ScreenUpdating = False
Sheets("base").Activate
Range("b9:ax" & DerLig).Name = "base"
Range("b10:b" & DerLig).Name = "Fiches"
Range("c10:i" & DerLig).Name = "Visites"
'******************************************
Range("i10:i" & DerLig).Name = "Col_i"
Range("j10:j" & DerLig).Name = "Col_j"
Range("k10:k" & DerLig).Name = "Col_k"
Range("L10:L" & DerLig).Name = "Col_L"
Range("n10:n" & DerLig).Name = "Col_n"
Range("o10:o" & DerLig).Name = "Col_o"
Range("p10:p" & DerLig).Name = "Col_p"
Range("r10:r" & DerLig).Name = "Col_r"
Range("s10:s" & DerLig).Name = "Col_s"
Range("t10:t" & DerLig).Name = "Col_t"
Range("u10:u" & DerLig).Name = "Col_u"
Range("v10:v" & DerLig).Name = "Col_v"
Range("w10:w" & DerLig).Name = "Col_w"
Range("x10:x" & DerLig).Name = "Col_x"
Range("z10:z" & DerLig).Name = "Col_z"
Range("aa10:aa" & DerLig).Name = "Col_aa"
Range("ab10:ab" & DerLig).Name = "Col_ab"
Range("ac10:ac" & DerLig).Name = "Col_ac"
Range("ae10:ae" & DerLig).Name = "Col_ae"
Range("af10:af" & DerLig).Name = "Col_af"
Range("ag10:ag" & DerLig).Name = "Col_ag"
Range("ah10:ah" & DerLig).Name = "Col_ah"
Range("ai10:ai" & DerLig).Name = "Col_ai"
Range("aj10:aj" & DerLig).Name = "Col_aj"
Range("ak10:ak" & DerLig).Name = "Col_ak"
Range("am10:am" & DerLig).Name = "Col_am"
Range("an10:an" & DerLig).Name = "Col_an"
Range("ap10:ap" & DerLig).Name = "Col_ap"
Range("aq10:aq" & DerLig).Name = "Col_aq"
Application.Goto [a10], Scroll:=True
End Sub
Sub Note_aide() ' procédure
Application.ScreenUpdating = False
With Range("c1")
If .Value = 1 Then
Range("c1").Comment.Visible = True
Range("d1").Comment.Visible = False
.Value = 2
Exit Sub
End If
If .Value = 2 Then
Range("c1").Comment.Visible = False
Range("d1").Comment.Visible = True
.Value = 3
Exit Sub
End If
If .Value = 3 Then
Range("c1").Comment.Visible = False
Range("d1").Comment.Visible = False
.Value = 1
End If
End With
Range("b8").Activate
End Sub
Hello,
Je te joint le fichier que j'ai trouvé...
Pour ma part ce que je souhaite c'est faire un questionnaire ou mes interviewes repondrons aux questions et en validant, toutes les informations sont reprises dans la feuille 2...
https://www.cjoint.com/?0Avk4jsxPn9
Je te joint le fichier que j'ai trouvé...
Pour ma part ce que je souhaite c'est faire un questionnaire ou mes interviewes repondrons aux questions et en validant, toutes les informations sont reprises dans la feuille 2...
https://www.cjoint.com/?0Avk4jsxPn9
Hello,
Désolé, je ne peux pas ouvrir le fichier joint, il est bloqué par le pare-feu de ma boîte.
C'est un gros boulot que de t'expliquer tout le code, mais on peut essayer par petits bouts. Certainement que d'autres utilisateurs pourront contribuer, car je n'ai plus fait de VBA depuis pas mal d'année.
Est-ce que c'est ce que tu souhaites, là je ne l'ai fait que pour une procédure.
Un des moyens que j'utilise le plus pour me documenter c'est google. Dans la recherche du écrit simplement le langage de programmation suivit de ce qui te perturbe, genre VBA Call. Tu devrais déjà trouver pas mal de réponse.
Désolé, je ne peux pas ouvrir le fichier joint, il est bloqué par le pare-feu de ma boîte.
C'est un gros boulot que de t'expliquer tout le code, mais on peut essayer par petits bouts. Certainement que d'autres utilisateurs pourront contribuer, car je n'ai plus fait de VBA depuis pas mal d'année.
Sub purge() ' entre sub et end sub ce sont des procédures, c'est à dire que tu peux les appeler depuis un autre endroit du code ou simplement depuis [/contents/1103-introduction-a-la-notion-de-tableur Excel] comme macro
' Au fait, les apostrophes permettent d'écrire des commentaires
Sheets("base").Activate ' Ici on active la feuille "base" sur laquelle on veut travailler
Application.EnableEvents = False 'désactive temporairement les macros événementielles ce qui permet que la macro s'effectue jusqu'à la fin
Range([ax10], [b65536].End(xlUp)).ClearContents ' ici on vide le contenu de chacune des cases marquée (End(xlUp) remonte jusqu'à la dernière ligne non vide)
Range("b10") = 0 'met cette case égale à zéro
Call initialise ' transfère le contrôle à la procédure initialise()
End Sub
Est-ce que c'est ce que tu souhaites, là je ne l'ai fait que pour une procédure.
Un des moyens que j'utilise le plus pour me documenter c'est google. Dans la recherche du écrit simplement le langage de programmation suivit de ce qui te perturbe, genre VBA Call. Tu devrais déjà trouver pas mal de réponse.
Re moi,
J'ai reussi a comprendre l'essentielle de ce que je voulais faire... A savoir reporter mes informations sur une autre vieille des que nous validons le questionnaire...
Cependant, j'aimerais que ce bouton soit bloquer ou qu'il y ai un message si tous les zones ne sont pas complèté...
Tu peux m'aider ?
J'ai reussi a comprendre l'essentielle de ce que je voulais faire... A savoir reporter mes informations sur une autre vieille des que nous validons le questionnaire...
Cependant, j'aimerais que ce bouton soit bloquer ou qu'il y ai un message si tous les zones ne sont pas complèté...
Tu peux m'aider ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Hello,
Une fonction pour toi:
IsEmpty
Du coup, lors du clique, tu peux afficher un message d'erreur si tous les champs ne sont pas remplis (il faut tous les tester, tu peux mettre IsEmpty(...) & IsEmpty(...) & ... then) ou alors exécuter la procédure.
Ca te donnera un truc du genre:
Il serait également possible de désactiver le bouton, mais pour ça tu devrais accéder aux propriétés de ta worksheet, pour en capter les modifications lors de l'introduction de données, puis récupérer le nom de ton bouton.
Une fonction pour toi:
IsEmpty
Du coup, lors du clique, tu peux afficher un message d'erreur si tous les champs ne sont pas remplis (il faut tous les tester, tu peux mettre IsEmpty(...) & IsEmpty(...) & ... then) ou alors exécuter la procédure.
Ca te donnera un truc du genre:
If IsEmpty(Range("b1")) & IsEmpty(Range("b2")) Then
MsgBox "Remplir tous les champs svp."
Else
execution()
End If
Il serait également possible de désactiver le bouton, mais pour ça tu devrais accéder aux propriétés de ta worksheet, pour en capter les modifications lors de l'introduction de données, puis récupérer le nom de ton bouton.
Private Sub CommandButton1_Click()
If IsEmpty(Range("b1")) & IsEmpty(Range("b2")) Then ' Si les champs b1 et b2 ne sont pas remplis, alors
MsgBox "Remplir tous les champs svp." ' On envoie une boîte de message
Else ' Sinon
With Sheets("synt").Range("B1:B28") ' On exécute la procédure
.Copy
Sheets("Base").Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial _
Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
End With
ActiveWorkbook.Save
End If
End Sub
Hello,
J'ai essayé mais encore une fois ça marche pas...
J'ai voulu dire : "Si les cases sont numeric tu me transferes les données et si non tu envoies un message"... mais ça ne fonctionne pas... ma ligne If ressort en jaune...
Tu peux regarder pourquoi ?
Private Sub CommandButton1_Click()
If IsNumeric(Range("N26")) & IsNumeric(Range("N32")) & IsNumeric(Range("N38")) & IsNumeric(Range("N44")) & IsNumeric(Range("N50")) & IsNumeric(Range("N56")) Then
With Sheets("synt").Range("B1:B28")
.Copy
Sheets("Base").Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial _
Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
End With
Else
MsgBox "Merci de remplir completement l'evaluation"
End If
ActiveWorkbook.Save
End Sub
J'ai essayé mais encore une fois ça marche pas...
J'ai voulu dire : "Si les cases sont numeric tu me transferes les données et si non tu envoies un message"... mais ça ne fonctionne pas... ma ligne If ressort en jaune...
Tu peux regarder pourquoi ?
Private Sub CommandButton1_Click()
If IsNumeric(Range("N26")) & IsNumeric(Range("N32")) & IsNumeric(Range("N38")) & IsNumeric(Range("N44")) & IsNumeric(Range("N50")) & IsNumeric(Range("N56")) Then
With Sheets("synt").Range("B1:B28")
.Copy
Sheets("Base").Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial _
Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
End With
Else
MsgBox "Merci de remplir completement l'evaluation"
End If
ActiveWorkbook.Save
End Sub
Bonjour moi aussi j'ai besoin de comprendre le code vba suivant
Columns(5).Clear
Cells(1, 5).Value = "MoyMob"
l = InputBox("inserer valeur")
Range(Cells(l + 1, 1), Cells(l + 1, 1).End(xlDown)).Offset(0, 4).Select
Selection.FormulaR1C1 = "=sum(r[" & -l + 1 & "]c2:rc2)"
en fait il s'agit de calculer la moyenne mobile d'une serie, la première je comprends le role du l mais la seconde pourquoi (- l), quelqu'un peut m'expliquer.
Columns(5).Clear
Cells(1, 5).Value = "MoyMob"
l = InputBox("inserer valeur")
Range(Cells(l + 1, 1), Cells(l + 1, 1).End(xlDown)).Offset(0, 4).Select
Selection.FormulaR1C1 = "=sum(r[" & -l + 1 & "]c2:rc2)"
en fait il s'agit de calculer la moyenne mobile d'une serie, la première je comprends le role du l mais la seconde pourquoi (- l), quelqu'un peut m'expliquer.