A voir également:
- Changer de référence de cellule selon la valeur d'une autre cellule
- Changer dns - Guide
- Aller à la ligne dans une cellule excel - Guide
- Excel cellule couleur si condition texte - Guide
- Verrouiller cellule excel - Guide
- Diviser une cellule excel en deux horizontalement ✓ - Forum Excel
14 réponses
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
Modifié le 8 juin 2020 à 08:52
Modifié le 8 juin 2020 à 08:52
Du coup, ce scricpt n’apparaît pas dans "développeur-macro", juste dans "développeur - visual basic"...
je ne sais pas, ma version d'excel (2003) n'a pas la même interface
Macro = un script qui peut ou pas être associé à un bouton, c'est ça ?
entre autres, ici elle réagit à un changement dans la feuille
Et en faite, pourquoi ne rien faire si plusieurs cellule changent ? Quel est le risque ?
vu ce qu'on veut lui faire faire ....
Visual basic semble aussi un langage orienté objet.
oui
target semble avoir plusieurs méthode comme .find, .next... il se comporte comme une liste c'est ça ?
voir ici
Cdlmnt
je ne sais pas, ma version d'excel (2003) n'a pas la même interface
Macro = un script qui peut ou pas être associé à un bouton, c'est ça ?
entre autres, ici elle réagit à un changement dans la feuille
Et en faite, pourquoi ne rien faire si plusieurs cellule changent ? Quel est le risque ?
vu ce qu'on veut lui faire faire ....
Visual basic semble aussi un langage orienté objet.
oui
target semble avoir plusieurs méthode comme .find, .next... il se comporte comme une liste c'est ça ?
voir ici
Cdlmnt
Utilisateur anonyme
7 juin 2020 à 16:35
7 juin 2020 à 16:35
Bonjour
c'est pas virtual, mais visual, et plus précisément dans le cas d'Excel (on va parier que tu travailles avec Excel...) Visual Basic pour Application.
Ce que tu demandes est possible en VBA et aussi je pense en formules Excel.
Mais si tu le fais avec VBA, y'a pas vraiment d'interêt à modifier la formule, VBA peut faire le calcul plus vite que modifier la formule ce qui ensuite fait un calcul.
Mais bon c'est ton choix.
Afin de déplacer ton message dans le bon forum
=> Excel si tu veux des formules
=>VBA si tu veux une macro.
Et dans le cas d'une macro, si tu persistes à modifier des formules (en dépit de la perte de performances) par rapport à tout faire calculer en VBA
c'est pas virtual, mais visual, et plus précisément dans le cas d'Excel (on va parier que tu travailles avec Excel...) Visual Basic pour Application.
Ce que tu demandes est possible en VBA et aussi je pense en formules Excel.
Mais si tu le fais avec VBA, y'a pas vraiment d'interêt à modifier la formule, VBA peut faire le calcul plus vite que modifier la formule ce qui ensuite fait un calcul.
Mais bon c'est ton choix.
Afin de déplacer ton message dans le bon forum
=> Excel si tu veux des formules
=>VBA si tu veux une macro.
Et dans le cas d'une macro, si tu persistes à modifier des formules (en dépit de la perte de performances) par rapport à tout faire calculer en VBA
Bonjour.
Oui, j'ai oublié de préciser, mais c'est bien avec un tableur Excel que je voulais faire ça.
Pardons, effectivement c'est visual Basic.
Donc, si j'ai bien compris, c'est possible de le faire avec/sans macro ? comment ?
Pourriez-vous me donner deux exemples (avec/sans visual basic) ?
En vous remerciant.
Oui, j'ai oublié de préciser, mais c'est bien avec un tableur Excel que je voulais faire ça.
Pardons, effectivement c'est visual Basic.
Donc, si j'ai bien compris, c'est possible de le faire avec/sans macro ? comment ?
Pourriez-vous me donner deux exemples (avec/sans visual basic) ?
En vous remerciant.
Utilisateur anonyme
7 juin 2020 à 18:12
7 juin 2020 à 18:12
Moi non, Excel je ne maitrise pas, mon but était de déplacer ton message dans le bon forum...
Et vu que tu voudrais un exemple de chaque, ben je suis bien emmerdé....
Je vais donc déplacer vers le forum Excel, il s'y parle parfois de VBA.
Et vu que tu voudrais un exemple de chaque, ben je suis bien emmerdé....
Je vais donc déplacer vers le forum Excel, il s'y parle parfois de VBA.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
Modifié le 7 juin 2020 à 18:20
Modifié le 7 juin 2020 à 18:20
Bonjour à tous les deux
Pour la première salve essaies
=INDIRECT("B"&$A$1)*3
Pour la deuxième, je comprends mal où tu veux en venir
Cdlmnt
Pour la première salve essaies
=INDIRECT("B"&$A$1)*3
Pour la deuxième, je comprends mal où tu veux en venir
Cdlmnt
Merci à tous les deux d'ailleurs, j'oubliais...
L'idée de base est, en partant d'un nombre de'élèves connu, de créer le bon nombre de ligne dans plusieurs tableaux : si 28 élèves (par exemple marqué en A1), alors je veux que ma macro crée 28 lignes à mon tableau (jusqu'à la ligne 28 dans la page suivante).
Merci pour vos explications messieurs.
L'idée de base est, en partant d'un nombre de'élèves connu, de créer le bon nombre de ligne dans plusieurs tableaux : si 28 élèves (par exemple marqué en A1), alors je veux que ma macro crée 28 lignes à mon tableau (jusqu'à la ligne 28 dans la page suivante).
Merci pour vos explications messieurs.
@Whismeril: j'avais pas vu ton message. merci !
@ccm81 : "=INDIRECT("B"&$A$1)*3"
ok cela permet de faire changer ma référence dans une formule d'une même cellule.
Maintenant, comment aller faire écrire une formule dans des cellule différente, selon la valeur d'une cellule :
- Si 7 en A1, alors je veux écrire une valeur dans la cellule B7
- Si 12 en A1, alors je veux écrire une valeur dans la cellule B12
- Si 35 en A1, alors je veux écrire une valeur dans la cellule B35
C'est aussi possible ?
En vous remerciant
@ccm81 : "=INDIRECT("B"&$A$1)*3"
ok cela permet de faire changer ma référence dans une formule d'une même cellule.
Maintenant, comment aller faire écrire une formule dans des cellule différente, selon la valeur d'une cellule :
- Si 7 en A1, alors je veux écrire une valeur dans la cellule B7
- Si 12 en A1, alors je veux écrire une valeur dans la cellule B12
- Si 35 en A1, alors je veux écrire une valeur dans la cellule B35
C'est aussi possible ?
En vous remerciant
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
Modifié le 7 juin 2020 à 19:30
Modifié le 7 juin 2020 à 19:30
Maintenant, comment aller faire écrire une formule dans des cellule différente, selon la valeur d'une cellule :
- Si 7 en A1, alors je veux écrire une valeur dans la cellule B7
- Si 12 en A1, alors je veux écrire une valeur dans la cellule B12
- Si 35 en A1, alors je veux écrire une valeur dans la cellule B35
Avec macro
ça répond à la question, mais ça ne résoud certainement pas ton problème
https://mon-partage.fr/f/KDpeG3vn/
Cdlmnt
- Si 7 en A1, alors je veux écrire une valeur dans la cellule B7
- Si 12 en A1, alors je veux écrire une valeur dans la cellule B12
- Si 35 en A1, alors je veux écrire une valeur dans la cellule B35
Avec macro
ça répond à la question, mais ça ne résoud certainement pas ton problème
https://mon-partage.fr/f/KDpeG3vn/
Cdlmnt
Merci !
mais je n'ai pas compris comment vous avez écrit. Je ne vois pas de macro
Si je mets 7 en A1, il va bien écrire en F7
Si je mets 8 en A1, il va bien écrire en F8
Mais comment ?
cdt
mais je n'ai pas compris comment vous avez écrit. Je ne vois pas de macro
Si je mets 7 en A1, il va bien écrire en F7
Si je mets 8 en A1, il va bien écrire en F8
Mais comment ?
cdt
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
7 juin 2020 à 19:31
7 juin 2020 à 19:31
Alt-F11 pour accéder au code
Je viens de trouver le code, mais je ne comprend pas tout :
Option Explicit /* c'est quoi .*/
Const cel = "A1" /* la cellule de réf ok*/
Const co = "F" /* la colonne où on va écrire ok*/
Private Sub Worksheet_Change(ByVal Target As Range) /*Byval ?? target devient un réf de cellule c'est ça ?*/
If Target.Count > 1 Then Exit Sub /* ?? ; .count pour compter quoi ? et Sub ?? */
If Not Intersect(Target, Range(cel)) Is Nothing Then /* pour parer à quelque chose qui ne soit pas un nb, donc pas exploitable ? */
Range(co & Target.Value) = Int(20 * Rnd) /* Target.value fait référence à la valeur de la cellule A1 donc on écrit bien en co & val de A1 ok, si je comprends bien, mais je comprends mal le calcul ? Rnd ? */
End If
End Sub
En vous remerciant
Option Explicit /* c'est quoi .*/
Const cel = "A1" /* la cellule de réf ok*/
Const co = "F" /* la colonne où on va écrire ok*/
Private Sub Worksheet_Change(ByVal Target As Range) /*Byval ?? target devient un réf de cellule c'est ça ?*/
If Target.Count > 1 Then Exit Sub /* ?? ; .count pour compter quoi ? et Sub ?? */
If Not Intersect(Target, Range(cel)) Is Nothing Then /* pour parer à quelque chose qui ne soit pas un nb, donc pas exploitable ? */
Range(co & Target.Value) = Int(20 * Rnd) /* Target.value fait référence à la valeur de la cellule A1 donc on écrit bien en co & val de A1 ok, si je comprends bien, mais je comprends mal le calcul ? Rnd ? */
End If
End Sub
En vous remerciant
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
Modifié le 7 juin 2020 à 19:44
Modifié le 7 juin 2020 à 19:44
Option Explicit
Directive de compilation qui oblige à déclarer toutes les variables utilisées
If Target.Count > 1 Then Exit Sub
Si plusieurs cellules changent de valeur on ne fait rien
If Not Intersect(Target, Range(cel)) Is Nothing Then
Si la cellule qui change est cel on y va
Range(co & Target.Value) = Int(20 * Rnd)
Met un entier aléatoire (de 0 à 19) en colonne co et en ligne dont le n° est dans la cellule cible (cel)
Là je dois plier boutique
Cdlmnt
Tcholko
>
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
7 juin 2020 à 19:57
7 juin 2020 à 19:57
" Si plusieurs cellules changent de valeur on ne fait rien" : je n'ai pas compris
"Exit sub" : pas trop compris...
mais je dois pouvoir adapter quand même votre code pour faire des choses.
Comme ce n'est pas une macro, je n'ai pas encore bien compris où écrire ce code dans un fichier Excel (je début en Visual Basic...)
Grand merci pour vos explications
"Exit sub" : pas trop compris...
mais je dois pouvoir adapter quand même votre code pour faire des choses.
Comme ce n'est pas une macro, je n'ai pas encore bien compris où écrire ce code dans un fichier Excel (je début en Visual Basic...)
Grand merci pour vos explications
Selon le nombre en A1, ça va bien écrire au bon endroit, mais la valeur écrite change et je ne comprend pas comment elle est calculé...
cdt
Edit : OK! Rnd renvoie un nb aléatoir... je ne comprennais pas, désolé.
Je commence à comprendre...
Par contre, ce scripte n'est pas une macro... où/comment l'avait-vous écrit ??
en vous remerciant
Edit 2 : Worksheet et Change, dans quel menu faut-il les écrire/définir ? (où aller dans le menu développer ?)
Cdt
cdt
Edit : OK! Rnd renvoie un nb aléatoir... je ne comprennais pas, désolé.
Je commence à comprendre...
Par contre, ce scripte n'est pas une macro... où/comment l'avait-vous écrit ??
en vous remerciant
Edit 2 : Worksheet et Change, dans quel menu faut-il les écrire/définir ? (où aller dans le menu développer ?)
Cdt
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
7 juin 2020 à 20:49
7 juin 2020 à 20:49
J'avais oublié celle là
Comme son nom l'indique, cette procédure est exécutée lorsqu'il y a un changement dans la feuille
Target (cellule cible) est la/les cellule(s) qui a/ont changé
Target.count est le nombre de cellules de la cellule cible.
Si plusieurs cellules ont changé (en cas d'une plage modifiée en bloc par exemple) on quitte sans rien faire (exit sub)
Par contre, ce scripte n'est pas une macro... où/comment l'avait-vous écrit ??
Si c'est bien une macro écrite dans le module de la feuille à traiter.
Alt-F11 ou clic-droit sur l'onglet de la feuille pour accéder à l'éditeur vba
Private Sub Worksheet_Change(ByVal Target As Range)
Comme son nom l'indique, cette procédure est exécutée lorsqu'il y a un changement dans la feuille
Target (cellule cible) est la/les cellule(s) qui a/ont changé
If Target.Count > 1 Then Exit Sub
Target.count est le nombre de cellules de la cellule cible.
Si plusieurs cellules ont changé (en cas d'une plage modifiée en bloc par exemple) on quitte sans rien faire (exit sub)
Par contre, ce scripte n'est pas une macro... où/comment l'avait-vous écrit ??
Si c'est bien une macro écrite dans le module de la feuille à traiter.
Alt-F11 ou clic-droit sur l'onglet de la feuille pour accéder à l'éditeur vba
Ok, merci.
Du coup, ce scricpt n’apparaît pas dans "développeur-macro", juste dans "développeur - visual basic"...
Macro = un script qui peut ou pas être associé à un bouton, c'est ça ?
Et en faite, pourquoi ne rien faire si plusieurs cellule changent ? Quel est le risque ?
Et comment récupérer les différentes cellules qui ont changée ?*
Je sais programmer en java. Visual basic semble aussi un langage orienté objet.
target semble avoir plusieurs méthode comme .find, .next... il se comporte comme une liste c'est ça ?
En vous remerciant
Du coup, ce scricpt n’apparaît pas dans "développeur-macro", juste dans "développeur - visual basic"...
Macro = un script qui peut ou pas être associé à un bouton, c'est ça ?
Et en faite, pourquoi ne rien faire si plusieurs cellule changent ? Quel est le risque ?
Et comment récupérer les différentes cellules qui ont changée ?*
Je sais programmer en java. Visual basic semble aussi un langage orienté objet.
target semble avoir plusieurs méthode comme .find, .next... il se comporte comme une liste c'est ça ?
En vous remerciant