[vba] Macro pour changer la valeur d'une case
Dernière réponse : dans Programmation
Bonjour,
Je débute dans les macros excel et je bloc sur un souci:
Mon but est que lorsqu'on tape un chiffre différent de 11 dans la 41° colonne, pour toutes les cellules se trouvant sur la même ligne entre la colonne 11 et 28 et ayant pour valeur 1 la valeur passe à 0.
Je pensais avoir trouvé mais cela ne veut pas marché...
Voici mon code qui ne marche pas:
Merci pour votre aide
Je débute dans les macros excel et je bloc sur un souci:
Mon but est que lorsqu'on tape un chiffre différent de 11 dans la 41° colonne, pour toutes les cellules se trouvant sur la même ligne entre la colonne 11 et 28 et ayant pour valeur 1 la valeur passe à 0.
Je pensais avoir trouvé mais cela ne veut pas marché...
Voici mon code qui ne marche pas:
Private Sub Worksheet_Change(ByVal Target As Excel.Range) 'Définition des variables iC = Target.Column iR = Target.Row 'Remise à zéro de la puissance If (iC = 41 And Cells(iR, 41) <> "" And Cells(iR, 41) <> 11) Then If (Cells(iR, 11) = 1) Then Cells(iR, 11) = 0: If (Cells(iR, 12) = 1) Then Cells(iR, 12) = 0: If (Cells(iR, 13) = 1) Then Cells(iR, 13) = 0: If (Cells(iR, 14) = 1) Then Cells(iR, 14) = 0: If (Cells(iR, 15) = 1) Then Cells(iR, 15) = 0: If (Cells(iR, 16) = 1) Then Cells(iR, 16) = 0: If (Cells(iR, 17) = 1) Then Cells(iR, 17) = 0: If (Cells(iR, 18) = 1) Then Cells(iR, 18) = 0: If (Cells(iR, 19) = 1) Then Cells(iR, 19) = 0: If (Cells(iR, 20) = 1) Then Cells(iR, 20) = 0: If (Cells(iR, 21) = 1) Then Cells(iR, 21) = 0: If (Cells(iR, 22) = 1) Then Cells(iR, 22) = 0: If (Cells(iR, 23).Value = 1) Then Cells(iR, 23) = 0: If (Cells(iR, 24) = 1) Then Cells(iR, 24) = 0: If (Cells(iR, 25) = 1) Then Cells(iR, 25) = 0: If (Cells(iR, 26) = 1) Then Cells(iR, 26) = 0: If (Cells(iR, 27) = 1) Then Cells(iR, 27) = 0: If (Cells(iR, 28) = 1) Then Cells(iR, 28) = 0 End Sub
Merci pour votre aide
Autres pages sur : vba macro changer valeur case
Lassé par la pub ? Créez un compte
Commence par écrire correctement. Le français, pas (trop) de problèmes. Mais alors le BASIC oulala.
N'utilise JAMAIS
(sauf exception
) le séparateur < : >
C'est moche et illisible.
Au lieu de faire 18 (!) lignes identiques à une composante près, utilise une boucle.
Où est le End If du If de la ligne 7 ?
Après avoir réécrit tout ça correctement, soit tu vois ton erreur et tu la corriges, soit tu reviens ici en nous montrant ton code nouveau et on en reparle.
N'utilise JAMAIS
(sauf exception
) le séparateur < : >C'est moche et illisible.
Au lieu de faire 18 (!) lignes identiques à une composante près, utilise une boucle.
Où est le End If du If de la ligne 7 ?
Après avoir réécrit tout ça correctement, soit tu vois ton erreur et tu la corriges, soit tu reviens ici en nous montrant ton code nouveau et on en reparle.
Je suis entrain d'écrire un petite macro me permettant de changer le contenu d'une cellule suivant les valeurs d'une autre cellule de type liste.
Problème, lorsque j'exécute la macro pas à pas, ma fonction est bien réalisée. par contre une fois sous Excel, les modifications des cellules ne sont pas prises en compte.
Voici un aperçu de ma fonction
Avez -vous une idée pour modifier le contenu d'une cellule à travers VB?
Merci d'avance
Problème, lorsque j'exécute la macro pas à pas, ma fonction est bien réalisée. par contre une fois sous Excel, les modifications des cellules ne sont pas prises en compte.
Voici un aperçu de ma fonction
Function ouverture(nom As String) As String 'Sub ouverture() Dim var As String Dim msg As String msg = " Vous devez saisir une étiquette" ActiveWorkbook.Worksheets("Fiche1").Activate On Error Resume Next nom = Worksheets("Fiche1").Range("Nom_projet").Value Select Case nom Case Is = "Madrid" MsgBox (msg) Worksheets("Fiche1").Range("Identifiant").Value = " " Case Is = "Paris" Worksheets("Fiche1").Range("Identifiant").Value = Worksheets("Fiche_1").Range("En_tete").Value Case Is = "Milan" Worksheets("Fiche1").Range("Identifiant").Value = Worksheets("Fiche1").Range("En_tete").Value end function
Avez -vous une idée pour modifier le contenu d'une cellule à travers VB?
Merci d'avance
Les règles sont disponibles en haut à droite de toutes les pages du forum Programmation.
Les règles du forum Programmation- A lire !
De plus, un des 4 premiers topics sur la première page du forum, reprend ces mêmes règles.
![]()
Quelques règles simples à respecter -- /!\ A lire avant de poster !
Mais bien sûr, il n'est pas question que ce forum devienne anarchique. C'est pourquoi il y a ici des règles et des modérateurs pour les faire respecter. Merci donc d'en prendre connaissance.
Le non respect de ces règles est pour moi une forme d'impolitesse. Pourtant et inlassablement, je propose aux indélicats de se racheter. Le dépit devant cette tâche répétitive et ingrate transparaît parfois dans le ton de mes messages bien malgré moi. Pour ne pas avoir à le subir, merci donc de respecter les règles sans qu'on ait à le rappeler.
![]()
Ma façon de répondre plus ou moins "correcte pour les prochaines fois", sera donc plus ou moins liée à la façon de respecter ce forum et les gens qui y postent et qui répondent aux questions.
Dans le cas particulier de Lam2, il s'agit de :
Ne pas polluer le topic d'ombres7 puisque tu n'amères pas une solution à son problème. Tu as par contre tout loisir de créer ton propre topic.
Utiliser la balise CODE à bon escient.
Faire preuve de bonne volonté. On obtient tellement plus rapidement la réponse à ces problèmes dans ce cas. Pour autant, tu es libre d'exprimer tes humeurs et de donner ton avis, ça peut toujours être utile.
Les règles du forum Programmation- A lire !De plus, un des 4 premiers topics sur la première page du forum, reprend ces mêmes règles.

Quelques règles simples à respecter -- /!\ A lire avant de poster !Citation :
Par ailleurs, vous devriez revoir votre façon de répondre aux gens. l'Internet ne signifie pas anarchie et soyez plus correct pour les prochaines fois.Mais bien sûr, il n'est pas question que ce forum devienne anarchique. C'est pourquoi il y a ici des règles et des modérateurs pour les faire respecter. Merci donc d'en prendre connaissance.
Le non respect de ces règles est pour moi une forme d'impolitesse. Pourtant et inlassablement, je propose aux indélicats de se racheter. Le dépit devant cette tâche répétitive et ingrate transparaît parfois dans le ton de mes messages bien malgré moi. Pour ne pas avoir à le subir, merci donc de respecter les règles sans qu'on ait à le rappeler.

Ma façon de répondre plus ou moins "correcte pour les prochaines fois", sera donc plus ou moins liée à la façon de respecter ce forum et les gens qui y postent et qui répondent aux questions.
Dans le cas particulier de Lam2, il s'agit de :
A bien regarder ton code, je ne comprends pas pourquoi ça plante. Par contre la ligne 12 empêche Excel/VBA de signaler une éventuelle erreur. En phase de test, il faut mieux ne pas utiliser On Error Resume Next.
Je vois que tu as fais quelques essais
(Sub/Function, il manque la fin du select, etc.) Quand tu testes en mode function, j'espère que tu enlève la ligne 13 !
Alors que donne cette fonction sans ces quelques lignes ?
Je vois que tu as fais quelques essais
(Sub/Function, il manque la fin du select, etc.) Quand tu testes en mode function, j'espère que tu enlève la ligne 13 !Alors que donne cette fonction sans ces quelques lignes ?
Merci Zeb pour tes remarques. Effectivement je faisais quelques essais , d'où le code incomplet. Mais , le programme marche parfaitement lorsque je le déclare comme une procédure (Sub). Mais pour l'exécuter, je suis obligé de cliquer sur l'onglet exécuter de VB ou de la déclarer comme un " sub auto_open()". Ainsi, la procédure s'exécute une seule fois l'ors de l'ouverture de la fiche Excel concernée. Une fois la fiche ouverte, lorsque je sélectionne une autre valeur de ma liste, plus rien ne se passe. Tout mon problème se situe à ce niveau. Comment arriver à continuer à exécuter la procédure sans fermer la fiche pour la rouvrir à nouveau, ou sans aller dans l'environnement de dev de VB.
Merci et très bonne fin de semaine
Merci et très bonne fin de semaine
Lassé par la pub ? Créez un compte
- Contenus similaires :
- ForumMacro VBA copier-coller tableaux help !
- ForumVBA, création d'une macro de mise à jour
- ForumExcel vba macro fonction tri
- ForumMacro Copie Valeur et mise en forme sur excel
- ForumVba excel insérer valeur dans une liste déroulante
- ForumMacro de recherche,selection et copier/coller la valeur
- ForumMacro de recherche,selection et copier/coller la valeur
- Forum[Excel/VBA]Macro copier/coller à partir d'un CSV
- ForumExcel VBA copier 3 premières valeurs cellule [Résolu]
- Voir plus