Petit souci avec excel
Résolu/Fermé
A voir également:
- Petit souci avec excel
- Liste déroulante excel - Guide
- Si et excel - Guide
- Excel trier du plus grand au plus petit - Guide
- Word et excel gratuit - Guide
- Aller à la ligne excel - Guide
3 réponses
Syzygy
Messages postés
378
Date d'inscription
vendredi 29 avril 2011
Statut
Membre
Dernière intervention
31 décembre 2011
143
17 sept. 2011 à 22:00
17 sept. 2011 à 22:00
Bonsoir,
Désolé, je ne suis pas sur de comprendre ce que vous voulez. En fait vous souhaitez ajoutez 1 à la valeur contenue dans la cellule A1 à chaque fois que vous modifiez la valeur en B1?
Si c'est çà, il sera nécessaire de passer par une macro.
Si ce n'est pas çà, il sera nécessaire d'expliquer plus précisément votre besoin et si possible de nous transmettre votre fichier à l'aide du site www.cijoint.fr
Bonne soirée,
Désolé, je ne suis pas sur de comprendre ce que vous voulez. En fait vous souhaitez ajoutez 1 à la valeur contenue dans la cellule A1 à chaque fois que vous modifiez la valeur en B1?
Si c'est çà, il sera nécessaire de passer par une macro.
Si ce n'est pas çà, il sera nécessaire d'expliquer plus précisément votre besoin et si possible de nous transmettre votre fichier à l'aide du site www.cijoint.fr
Bonne soirée,
Syzygy
Messages postés
378
Date d'inscription
vendredi 29 avril 2011
Statut
Membre
Dernière intervention
31 décembre 2011
143
17 sept. 2011 à 23:17
17 sept. 2011 à 23:17
Bonsoir,
Ok alors pour celà ouvrez l'éditeur VBA d'Excel (VBE) en appuyant sur Alt + F11
Dans la sélectionnez le module contenant le code de la feuille ou vous voulez effectuer votre incrémentation automatique (Feuil1) dans la partie gauche du VBE.
Collez le code suivant dans votre module :
Private Sub Worksheet_Change(ByVal Target As Range)
'Cette macro s'exécute à chaque changement de valeur intervenant dans la feuille de calcul "Feuil1"
On Error GoTo Erreur
If Target.Address = "$B$1" Then 'Test si le cellule modifiée est la cellule "B1"
Range("A1").Value = Range("A1").Value + 1 'Rajoute 1 à la valeur contenue en "A1"
End If
Erreur:
End Sub
Et hop! Ca devrait marcher (pour peu que la valeur en A1 soit vide ou un nombre évidemment).
Bonne soirée,
Ok alors pour celà ouvrez l'éditeur VBA d'Excel (VBE) en appuyant sur Alt + F11
Dans la sélectionnez le module contenant le code de la feuille ou vous voulez effectuer votre incrémentation automatique (Feuil1) dans la partie gauche du VBE.
Collez le code suivant dans votre module :
Private Sub Worksheet_Change(ByVal Target As Range)
'Cette macro s'exécute à chaque changement de valeur intervenant dans la feuille de calcul "Feuil1"
On Error GoTo Erreur
If Target.Address = "$B$1" Then 'Test si le cellule modifiée est la cellule "B1"
Range("A1").Value = Range("A1").Value + 1 'Rajoute 1 à la valeur contenue en "A1"
End If
Erreur:
End Sub
Et hop! Ca devrait marcher (pour peu que la valeur en A1 soit vide ou un nombre évidemment).
Bonne soirée,
bonjour Syzygy,
cela me plait beaucoup pour le resultat mais ce que j'ai oublié de te dire c'est que le resultat en A1 doit correspondre a la somme de A1 + la valeur de B1 (j' ai essayé de remplacer la valeur de la macro par $b$1 mais cela ne marche pas ) . Je peux inserer des colonnes car mon tableau resemble a ça :
A1 B1 C1
1 1 Paris
9 2 Noyelles
4 3 Englos
L'idée est lorsque efface la colone B et que je la remplace par une nouvelle serie de chiffre la valeur en A affiche le resulat de A+B. J'ai environ 30 lignes.
Merci beaucoup pour ton aide.
Bon dimanche
cela me plait beaucoup pour le resultat mais ce que j'ai oublié de te dire c'est que le resultat en A1 doit correspondre a la somme de A1 + la valeur de B1 (j' ai essayé de remplacer la valeur de la macro par $b$1 mais cela ne marche pas ) . Je peux inserer des colonnes car mon tableau resemble a ça :
A1 B1 C1
1 1 Paris
9 2 Noyelles
4 3 Englos
L'idée est lorsque efface la colone B et que je la remplace par une nouvelle serie de chiffre la valeur en A affiche le resulat de A+B. J'ai environ 30 lignes.
Merci beaucoup pour ton aide.
Bon dimanche
Syzygy
Messages postés
378
Date d'inscription
vendredi 29 avril 2011
Statut
Membre
Dernière intervention
31 décembre 2011
143
18 sept. 2011 à 10:54
18 sept. 2011 à 10:54
Bonjour,
A oui mais là ce n'est plus du tout la même chose.
Essaye ceci :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim NumeroLigne As Integer
Dim ValeurA As Double
Dim ValeurB As Double
On Error GoTo Fin
NumeroLigne = ActiveCell.Row
' Si vous validez vos enregistrements à l'aide de la touche "Entrée", décommentez la ligne ci-dessous.
'NumeroLigne = NumeroLigne - 1
If Target.Row = NumeroLigne And Target.Column = 2 Then
If IsEmpty(Range("C" & NumeroLigne).Value) Then 'Teste si la colonne C est vide. Si elle l'est n'effectue pas l'opération.
Else
ValeurA = Range("A" & NumeroLigne).Value 'Récupère la valeur de la cellule A
ValeurB = Range("B" & NumeroLigne).Value 'Récupère la valeur de la cellule B
Range("A" & NumeroLigne).Value = ValeurA + ValeurB 'Affecte la nouvelle valeur à la cellule A
End If
End If
Fin:
End Sub
Cette solution fonctionne uniquement si tu modifies une cellule à la fois et que tu valides à l'aide de la touche tabulation (ou entrée en décommentant la ligne indiquée).
Je n'ai pas trouvé mieux que çà pour le moment.
@+
A oui mais là ce n'est plus du tout la même chose.
Essaye ceci :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim NumeroLigne As Integer
Dim ValeurA As Double
Dim ValeurB As Double
On Error GoTo Fin
NumeroLigne = ActiveCell.Row
' Si vous validez vos enregistrements à l'aide de la touche "Entrée", décommentez la ligne ci-dessous.
'NumeroLigne = NumeroLigne - 1
If Target.Row = NumeroLigne And Target.Column = 2 Then
If IsEmpty(Range("C" & NumeroLigne).Value) Then 'Teste si la colonne C est vide. Si elle l'est n'effectue pas l'opération.
Else
ValeurA = Range("A" & NumeroLigne).Value 'Récupère la valeur de la cellule A
ValeurB = Range("B" & NumeroLigne).Value 'Récupère la valeur de la cellule B
Range("A" & NumeroLigne).Value = ValeurA + ValeurB 'Affecte la nouvelle valeur à la cellule A
End If
End If
Fin:
End Sub
Cette solution fonctionne uniquement si tu modifies une cellule à la fois et que tu valides à l'aide de la touche tabulation (ou entrée en décommentant la ligne indiquée).
Je n'ai pas trouvé mieux que çà pour le moment.
@+
Syzygy
Messages postés
378
Date d'inscription
vendredi 29 avril 2011
Statut
Membre
Dernière intervention
31 décembre 2011
143
18 sept. 2011 à 12:46
18 sept. 2011 à 12:46
En modifiant le nom des colonnes, il faut effectivement modifier les lettres mais également cette ligne :
If Target.Row = NumeroLigne And Target.Column = 2 Then
Le test Target.Column = "Un chiffre" vérifie les coordonnées de la colonne. Le chiffre 1 équivaut à la colonne A, le 2 correspond à la colonne B...
Par exemple si tu veux réaliser la macro sur un changement de valeur en colonne D par exemple il faudra changer la ligne en :
If Target.Row = NumeroLigne And Target.Column = 4 Then
Bon après-midi,
If Target.Row = NumeroLigne And Target.Column = 2 Then
Le test Target.Column = "Un chiffre" vérifie les coordonnées de la colonne. Le chiffre 1 équivaut à la colonne A, le 2 correspond à la colonne B...
Par exemple si tu veux réaliser la macro sur un changement de valeur en colonne D par exemple il faudra changer la ligne en :
If Target.Row = NumeroLigne And Target.Column = 4 Then
Bon après-midi,
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
18 sept. 2011 à 07:44
18 sept. 2011 à 07:44
bonjour,
si on incrémente de la valeur en B1
une petite astuce-bidouille sans macro:
en A1 tu écris
=A1+B1
tu passe outre l'avertissement de référence circulaire
et avec XL2007
dans options xl - formules tu actives le calcul itératif avec un nbre maximum de 1
https://www.cjoint.com/?3IshPosUw3s
si on incrémente de la valeur en B1
une petite astuce-bidouille sans macro:
en A1 tu écris
=A1+B1
tu passe outre l'avertissement de référence circulaire
et avec XL2007
dans options xl - formules tu actives le calcul itératif avec un nbre maximum de 1
https://www.cjoint.com/?3IshPosUw3s
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 250
18 sept. 2011 à 10:37
18 sept. 2011 à 10:37
Bonjour tout le monde,
et avec XL2007
dans options xl - formules tu actives le calcul itératif avec un nbre maximum de 1
A faire également sur 2003 dans 'outils / options...' onglet 'calcul'
eric
et avec XL2007
dans options xl - formules tu actives le calcul itératif avec un nbre maximum de 1
A faire également sur 2003 dans 'outils / options...' onglet 'calcul'
eric
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 250
18 sept. 2011 à 12:53
18 sept. 2011 à 12:53
kep, on sent le fromage ?
C'est dingue de devoir rappeler la coutoisie minimum...
C'est dingue de devoir rappeler la coutoisie minimum...
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 250
Modifié par eriiic le 18/09/2011 à 13:51
Modifié par eriiic le 18/09/2011 à 13:51
Tu as le droit de saisir des nombres négatifs...
Mais attention si tu ne vide pas B1 avant une action ailleurs sur la feuille.
Chaque recalcul de la feuille t'additionne la valeur B1 en A1
eric
Mais attention si tu ne vide pas B1 avant une action ailleurs sur la feuille.
Chaque recalcul de la feuille t'additionne la valeur B1 en A1
eric
17 sept. 2011 à 22:51