Aide pour comprendre le language VBA
Résolu/Fermé
celinetimothe
Messages postés
34
Date d'inscription
mercredi 17 octobre 2012
Statut
Membre
Dernière intervention
23 janvier 2014
-
21 janv. 2014 à 10:26
Lucass265 Messages postés 1 Date d'inscription mardi 27 mai 2014 Statut Membre Dernière intervention 27 mai 2014 - 27 mai 2014 à 21:34
Lucass265 Messages postés 1 Date d'inscription mardi 27 mai 2014 Statut Membre Dernière intervention 27 mai 2014 - 27 mai 2014 à 21:34
A voir également:
- Aide pour comprendre le language VBA
- Vba attendre 1 seconde ✓ - Forum VB / VBA
- Mkdir vba ✓ - Forum VB / VBA
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Excel compter cellule couleur sans vba - Guide
- Vba range avec variable ✓ - Forum VB / VBA
7 réponses
csi_bern
Messages postés
64
Date d'inscription
lundi 29 mars 2010
Statut
Membre
Dernière intervention
26 octobre 2020
2
21 janv. 2014 à 10:45
21 janv. 2014 à 10:45
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.
celinetimothe
Messages postés
34
Date d'inscription
mercredi 17 octobre 2012
Statut
Membre
Dernière intervention
23 janvier 2014
1
Modifié par pijaku le 21/01/2014 à 16:26
Modifié par pijaku le 21/01/2014 à 16:26
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
celinetimothe
Messages postés
34
Date d'inscription
mercredi 17 octobre 2012
Statut
Membre
Dernière intervention
23 janvier 2014
1
21 janv. 2014 à 10:56
21 janv. 2014 à 10:56
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
csi_bern
Messages postés
64
Date d'inscription
lundi 29 mars 2010
Statut
Membre
Dernière intervention
26 octobre 2020
2
Modifié par pijaku le 21/01/2014 à 16:22
Modifié par pijaku le 21/01/2014 à 16:22
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.
celinetimothe
Messages postés
34
Date d'inscription
mercredi 17 octobre 2012
Statut
Membre
Dernière intervention
23 janvier 2014
1
21 janv. 2014 à 11:14
21 janv. 2014 à 11:14
Oui le type de description que tu viens de me faire me conviens très bien... si tu es au boulot, je comprends que tu n'es pas le temps... par contre si le film de ce soir ne te plait pas et que tu t'ennui j'aimerais bien que tu regardes le fichier...
En tout cas merci...
En tout cas merci...
celinetimothe
Messages postés
34
Date d'inscription
mercredi 17 octobre 2012
Statut
Membre
Dernière intervention
23 janvier 2014
1
21 janv. 2014 à 15:43
21 janv. 2014 à 15:43
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
csi_bern
Messages postés
64
Date d'inscription
lundi 29 mars 2010
Statut
Membre
Dernière intervention
26 octobre 2020
2
22 janv. 2014 à 10:30
22 janv. 2014 à 10:30
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.
celinetimothe
Messages postés
34
Date d'inscription
mercredi 17 octobre 2012
Statut
Membre
Dernière intervention
23 janvier 2014
1
22 janv. 2014 à 11:06
22 janv. 2014 à 11:06
Merci pour ton retour... je vais tester ta fonction et je te tiens au courant...
celinetimothe
Messages postés
34
Date d'inscription
mercredi 17 octobre 2012
Statut
Membre
Dernière intervention
23 janvier 2014
1
22 janv. 2014 à 11:10
22 janv. 2014 à 11:10
Je viens de tester... J'ai mis dans execution le nom de mon bouton mais ça marche pas...
csi_bern
Messages postés
64
Date d'inscription
lundi 29 mars 2010
Statut
Membre
Dernière intervention
26 octobre 2020
2
22 janv. 2014 à 11:16
22 janv. 2014 à 11:16
execution() est le nom de la procédure que tu souhaites lancer
celinetimothe
Messages postés
34
Date d'inscription
mercredi 17 octobre 2012
Statut
Membre
Dernière intervention
23 janvier 2014
1
22 janv. 2014 à 11:19
22 janv. 2014 à 11:19
Ha d'accord... J'ai enlevé execution et mis le nom de mon bouton mais ça marche pas...
csi_bern
Messages postés
64
Date d'inscription
lundi 29 mars 2010
Statut
Membre
Dernière intervention
26 octobre 2020
2
22 janv. 2014 à 11:24
22 janv. 2014 à 11:24
Ca n'a aucun rapport avec ton bouton. Tu met une des procédure de ton code que tu souhaites voir exécutée lorsque tu presses sur le bouton. Je ne sais pas exactement laquelle, mais par exemple AfficherTout() ou stat(). Tu peux utiliser le mot clé call avant, genre call AfficherTout() ou call Stat()
csi_bern
Messages postés
64
Date d'inscription
lundi 29 mars 2010
Statut
Membre
Dernière intervention
26 octobre 2020
2
Modifié par csi_bern le 22/01/2014 à 12:54
Modifié par csi_bern le 22/01/2014 à 12:54
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
celinetimothe
Messages postés
34
Date d'inscription
mercredi 17 octobre 2012
Statut
Membre
Dernière intervention
23 janvier 2014
1
22 janv. 2014 à 16:57
22 janv. 2014 à 16:57
Si je veux lui dire "Si les données sur chiffrés" je met "If IsNumeric" ?
csi_bern
Messages postés
64
Date d'inscription
lundi 29 mars 2010
Statut
Membre
Dernière intervention
26 octobre 2020
2
22 janv. 2014 à 17:08
22 janv. 2014 à 17:08
Tout à fait
celinetimothe
Messages postés
34
Date d'inscription
mercredi 17 octobre 2012
Statut
Membre
Dernière intervention
23 janvier 2014
1
23 janv. 2014 à 09:24
23 janv. 2014 à 09:24
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
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
Modifié par Polux31 le 23/01/2014 à 09:54
Modifié par Polux31 le 23/01/2014 à 09:54
Bonjour,
Remplace les "&" par "AND" dans le IF ...
"&" sert à concaténer, "AND" est une condition en VB.
Remplace les "&" par "AND" dans le IF ...
"&" sert à concaténer, "AND" est une condition en VB.
celinetimothe
Messages postés
34
Date d'inscription
mercredi 17 octobre 2012
Statut
Membre
Dernière intervention
23 janvier 2014
1
23 janv. 2014 à 10:05
23 janv. 2014 à 10:05
CA MARCHE !!!!
MERCI MERCI MERCI !!!!!
MERCI MERCI MERCI !!!!!
Lucass265
Messages postés
1
Date d'inscription
mardi 27 mai 2014
Statut
Membre
Dernière intervention
27 mai 2014
27 mai 2014 à 21:34
27 mai 2014 à 21:34
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.