Création formule en VB
Fermé
touroul
Messages postés
475
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
11 novembre 2024
-
27 déc. 2015 à 10:45
touroul Messages postés 475 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 11 novembre 2024 - 31 déc. 2015 à 15:35
touroul Messages postés 475 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 11 novembre 2024 - 31 déc. 2015 à 15:35
A voir également:
- Création formule en VB
- Formule si et - Guide
- Vb - Télécharger - Langages
- Excel mise en forme conditionnelle formule - Guide
- Formule excel pour additionner plusieurs cellules - Guide
- Formule excel moyenne - Guide
9 réponses
Gyrus
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
524
27 déc. 2015 à 12:05
27 déc. 2015 à 12:05
Bonjour,
Essaie comme cela
Attention ! le code doit être placé dans le module de la feuille concernée soit module Feuil1 (Essai).
A+
Essaie comme cela
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("ProchaineOperation")) Is Nothing Then
Target.FormulaR1C1 = "=IF(OR([@Date]="""",[@Périodicité]=""""),"""",EDATE(RC[-3],[@[Période en mois]])+0.25)"
End If
End Sub
Attention ! le code doit être placé dans le module de la feuille concernée soit module Feuil1 (Essai).
A+
touroul
Messages postés
475
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
11 novembre 2024
16
27 déc. 2015 à 13:41
27 déc. 2015 à 13:41
Bonjour Gyrus
Un grand merci, à priori la formule fonctionne après adaptations dans mon classeur.
Juste pour comprendre, pourquoi mets-tu 2 guillemets : """"" ?
Et pourquoi travailles-tu en références type L1C1 (RC[-3]) ?
J'ai appris encore quelque chose, c'est vraiment sympa.
@ plus
Un grand merci, à priori la formule fonctionne après adaptations dans mon classeur.
Juste pour comprendre, pourquoi mets-tu 2 guillemets : """"" ?
Et pourquoi travailles-tu en références type L1C1 (RC[-3]) ?
J'ai appris encore quelque chose, c'est vraiment sympa.
@ plus
Gyrus
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
524
27 déc. 2015 à 18:46
27 déc. 2015 à 18:46
Pourquoi mets-tu 2 guillemets ?
Lorsque tu construis une chaîne de texte dans VBA, tu dois faire précéder le guillemet que tu souhaites afficher avec une deuxième instance d'un guillemet.
Pourquoi travailles-tu en références type L1C1 ?
Ce mode est intéressant car on ne fait pas référence à des cellules déterminées mais à des références relatives, ce qui permet de conserver la même formulation, quelle que soit la cellule sélectionnée.
A+
Lorsque tu construis une chaîne de texte dans VBA, tu dois faire précéder le guillemet que tu souhaites afficher avec une deuxième instance d'un guillemet.
Pourquoi travailles-tu en références type L1C1 ?
Ce mode est intéressant car on ne fait pas référence à des cellules déterminées mais à des références relatives, ce qui permet de conserver la même formulation, quelle que soit la cellule sélectionnée.
A+
touroul
Messages postés
475
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
11 novembre 2024
16
27 déc. 2015 à 20:36
27 déc. 2015 à 20:36
OK c'est très clair
Je vais appliquer ça à plusieurs fichiers à présent.
Encore merci de m'avoir permis de progresser.
Au plaisir, bonne soirée !
Je vais appliquer ça à plusieurs fichiers à présent.
Encore merci de m'avoir permis de progresser.
Au plaisir, bonne soirée !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
touroul
Messages postés
475
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
11 novembre 2024
16
Modifié par touroul le 28/12/2015 à 09:28
Modifié par touroul le 28/12/2015 à 09:28
Bonjour Gyrus, si tu repasses par ici ...
Encore un souci.
Indépendamment, mes 2 macros fonctionnent.
Mais j'obtiens un message ""nom ambigu détecté" quand les 2 sont présentes.
J'ai essayé de mélanger, sans succès, après j'obtiens un message relatif aux déclarations des variables :
Puis-je à nouveau te solliciter ? Merci par avance.
Encore un souci.
Indépendamment, mes 2 macros fonctionnent.
Mais j'obtiens un message ""nom ambigu détecté" quand les 2 sont présentes.
J'ai essayé de mélanger, sans succès, après j'obtiens un message relatif aux déclarations des variables :
Private Sub Worksheet_SelectionChange(ByVal sel As Range)
Dim LastMetro As Range
If Not Application.Intersect(Selection, Range("LastMetro")) Is Nothing Then
MonUF.Show
End If
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("ProchaineMetrologie")) Is Nothing Then
Target.FormulaR1C1 = "=IF(OR([@Date]="""",[@Périodicité]=""""),"""",EDATE(RC[-3],[@[Période en mois]])+0.25)"
End If
End Sub
Puis-je à nouveau te solliciter ? Merci par avance.
Gyrus
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
524
28 déc. 2015 à 10:54
28 déc. 2015 à 10:54
Bonjour,
Tu ne peux créer qu'une procédure Worksheet.SelectionChange.
Il faut donc que la distinction des traitements soit effectuée dans la procédure.
Exemple :
A+
Tu ne peux créer qu'une procédure Worksheet.SelectionChange.
Il faut donc que la distinction des traitements soit effectuée dans la procédure.
Exemple :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("ProchaineMetrologie")) Is Nothing Then
Target.FormulaR1C1 = "=IF(OR([@Date]="""",[@Périodicité]=""""),"""",EDATE(RC[-3],[@[Période en mois]])+0.25)"
ElseIf Not Application.Intersect(Target, Range("LastMetro")) Is Nothing Then
MonUF.Show
End If
End Sub
A+
touroul
Messages postés
475
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
11 novembre 2024
16
28 déc. 2015 à 13:24
28 déc. 2015 à 13:24
Merci pour ta réponse Gyrus.
J'ai encore quelques soucis d'adaptation, je vais essayer de m'en sortir seul.
Là faut que j'aille bosser je reprends aujourd'hui :-(
Je rebosse le sujet ce soir ...
@ plus je ferai un reply !
Bonne journée
J'ai encore quelques soucis d'adaptation, je vais essayer de m'en sortir seul.
Là faut que j'aille bosser je reprends aujourd'hui :-(
Je rebosse le sujet ce soir ...
@ plus je ferai un reply !
Bonne journée
touroul
Messages postés
475
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
11 novembre 2024
16
Modifié par touroul le 31/12/2015 à 13:33
Modifié par touroul le 31/12/2015 à 13:33
Bonjour Gyrus
Je m'y suis remis ce matin avec succès cette fois.
Petit détail qui m'a posé problème : dans la formule en VB, il faut travailler avec les titres des colonnes du tableau automatique, et pas, comme je le faisais au départ, avec les noms des colonnes nommées en Gestionnaire de noms.
Je reviens sur un dernier détail :
Dans :
"MonUF" apparaît bien lorsque je clique dans "LastMetro", mais aussi lorsque je sélectionne la ligne en entier : une astuce pour éviter celà ?
Enfin, j'ai remarqué qu'on ne peut plus utiliser le filtre automatique A>Z lorsque le contenu de la colonne est issu d'un calcul.
Dans mon cas :
Bon réveillon !
Je m'y suis remis ce matin avec succès cette fois.
Petit détail qui m'a posé problème : dans la formule en VB, il faut travailler avec les titres des colonnes du tableau automatique, et pas, comme je le faisais au départ, avec les noms des colonnes nommées en Gestionnaire de noms.
Je reviens sur un dernier détail :
Dans :
ElseIf Not Application.Intersect(Target, Range("LastMetro")) Is Nothing Then
MonUF.Show
"MonUF" apparaît bien lorsque je clique dans "LastMetro", mais aussi lorsque je sélectionne la ligne en entier : une astuce pour éviter celà ?
Enfin, j'ai remarqué qu'on ne peut plus utiliser le filtre automatique A>Z lorsque le contenu de la colonne est issu d'un calcul.
Dans mon cas :
=SI(OU(F3="";G3"");"";MOIS.DECALER(F3;G3+0,25)
Bon réveillon !
Gyrus
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
524
31 déc. 2015 à 15:15
31 déc. 2015 à 15:15
Bonjour,
Pour éviter le problème lié à la sélection de ligne, essaie en ajoutant cette instruction en début de procédure :
Pour ce qui est du tri, je ne vois pas ce qui gène son utilisation.
Il faudrait que je puisse voir un exemple.
Bon réveillon également.
A+
Pour éviter le problème lié à la sélection de ligne, essaie en ajoutant cette instruction en début de procédure :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
Pour ce qui est du tri, je ne vois pas ce qui gène son utilisation.
Il faudrait que je puisse voir un exemple.
Bon réveillon également.
A+
touroul
Messages postés
475
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
11 novembre 2024
16
31 déc. 2015 à 15:35
31 déc. 2015 à 15:35
If Target.Count > 1 Then Exit Sub
Génial ! J'avais déjà vu cette commande sans savoir à quoi elle correspondait.
Je me permets de t'envoyer mon fichier en MP.
Belle-maman fait la cuisine pour ce soir je peux rester sur Excel :)