Opération sur une cellule sans perdre la formule ?
8 réponses
Talboum
Bonjour,
Soyez indulgents, je d=E9bute :whistle:
J'ai des feuilles excel comportant des formules qui sont des
r=E9f=E9rences =E0 d'autres fichiers en g=E9n=E9ral, des montants.
Ces montants, je dois tous les diviser par 1000000 et les afficher en
format 0,0.
Par exemple :
Cellule A1 contient =3D('C:\[reference.xls]Onglet 1'!C217)
et donne comme valeur : 1 234 567,5
qui doit devenir : 1,2
MAIS sans perdre la r=E9f=E9rence, donc un truc du style :
=3D('C:\[reference.xls]Onglet 1'!C217)/1000000
J'aimerais une macro qui fasse cela soit sur une s=E9lection d'une
cellule, soit sur une s=E9lection d'une plage de cellules.
Pouvez-vous m'aider ?
Voici mon =E9bauche de script ... mais =E7a coince :
[code]
Sub inMillionEur()
If TypeName(Selection) <> "Range" Then Exit Sub
Application.ScreenUpdating =3D False
For Each cell In Selection
' Si la cellule est vide, passer =E0 la suivante
If IsEmpty(cell) Then GoTo NextCell
' Si la cellule ne contient pas de donn=E9e num=E9rique, passer =E0 la
suivante
If IsNumeric(cell) =3D False Then GoTo NextCell
' Si la cellule contient une formule
If cell.HasFormula Then
newValue =3D cell.Formula & "/1000000"
cell.Formula =3D newValue '-----> probl=E8me !!!!!
' si la cellule contient une valeur
Else
' Conversion
cell.Value =3D cell / 1000000
End If
' Formater la cellule
FormatCell:
cell.NumberFormat =3D "#,#0.0"
' Passer =E0 la cellule suivante
NextCell:
Next cell
Application.ScreenUpdating =3D True
End Sub
[/code]
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Daniel
Bonjour. Essaie le format personnalisé : "# .0" (sans les ") soit dièse, espace, espace, point, zéro. Cordialement. Daniel "Talboum" a écrit dans le message de news:
Bonjour,
Soyez indulgents, je débute :whistle:
J'ai des feuilles excel comportant des formules qui sont des références à d'autres fichiers en général, des montants.
Ces montants, je dois tous les diviser par 1000000 et les afficher en format 0,0.
Par exemple : Cellule A1 contient =('C:[reference.xls]Onglet 1'!C217) et donne comme valeur : 1 234 567,5
qui doit devenir : 1,2
MAIS sans perdre la référence, donc un truc du style : =('C:[reference.xls]Onglet 1'!C217)/1000000
J'aimerais une macro qui fasse cela soit sur une sélection d'une cellule, soit sur une sélection d'une plage de cellules.
Pouvez-vous m'aider ?
Voici mon ébauche de script ... mais ça coince :
[code] Sub inMillionEur() If TypeName(Selection) <> "Range" Then Exit Sub Application.ScreenUpdating = False For Each cell In Selection ' Si la cellule est vide, passer à la suivante If IsEmpty(cell) Then GoTo NextCell ' Si la cellule ne contient pas de donnée numérique, passer à la suivante If IsNumeric(cell) = False Then GoTo NextCell ' Si la cellule contient une formule If cell.HasFormula Then newValue = cell.Formula & "/1000000" cell.Formula = newValue '-----> problème !!!!! ' si la cellule contient une valeur Else ' Conversion cell.Value = cell / 1000000 End If
' Formater la cellule FormatCell: cell.NumberFormat = "#,#0.0"
' Passer à la cellule suivante NextCell: Next cell Application.ScreenUpdating = True End Sub [/code]
Merci pour votre attention et votre aide.
Nathalie
Bonjour.
Essaie le format personnalisé : "# .0" (sans les ") soit dièse, espace,
espace, point, zéro.
Cordialement.
Daniel
"Talboum" <talboum@yahoo.com> a écrit dans le message de news:
1141141032.986298.146480@j33g2000cwa.googlegroups.com...
Bonjour,
Soyez indulgents, je débute :whistle:
J'ai des feuilles excel comportant des formules qui sont des
références à d'autres fichiers en général, des montants.
Ces montants, je dois tous les diviser par 1000000 et les afficher en
format 0,0.
Par exemple :
Cellule A1 contient =('C:[reference.xls]Onglet 1'!C217)
et donne comme valeur : 1 234 567,5
qui doit devenir : 1,2
MAIS sans perdre la référence, donc un truc du style :
=('C:[reference.xls]Onglet 1'!C217)/1000000
J'aimerais une macro qui fasse cela soit sur une sélection d'une
cellule, soit sur une sélection d'une plage de cellules.
Pouvez-vous m'aider ?
Voici mon ébauche de script ... mais ça coince :
[code]
Sub inMillionEur()
If TypeName(Selection) <> "Range" Then Exit Sub
Application.ScreenUpdating = False
For Each cell In Selection
' Si la cellule est vide, passer à la suivante
If IsEmpty(cell) Then GoTo NextCell
' Si la cellule ne contient pas de donnée numérique, passer à la
suivante
If IsNumeric(cell) = False Then GoTo NextCell
' Si la cellule contient une formule
If cell.HasFormula Then
newValue = cell.Formula & "/1000000"
cell.Formula = newValue '-----> problème !!!!!
' si la cellule contient une valeur
Else
' Conversion
cell.Value = cell / 1000000
End If
' Formater la cellule
FormatCell:
cell.NumberFormat = "#,#0.0"
' Passer à la cellule suivante
NextCell:
Next cell
Application.ScreenUpdating = True
End Sub
[/code]
Bonjour. Essaie le format personnalisé : "# .0" (sans les ") soit dièse, espace, espace, point, zéro. Cordialement. Daniel "Talboum" a écrit dans le message de news:
Bonjour,
Soyez indulgents, je débute :whistle:
J'ai des feuilles excel comportant des formules qui sont des références à d'autres fichiers en général, des montants.
Ces montants, je dois tous les diviser par 1000000 et les afficher en format 0,0.
Par exemple : Cellule A1 contient =('C:[reference.xls]Onglet 1'!C217) et donne comme valeur : 1 234 567,5
qui doit devenir : 1,2
MAIS sans perdre la référence, donc un truc du style : =('C:[reference.xls]Onglet 1'!C217)/1000000
J'aimerais une macro qui fasse cela soit sur une sélection d'une cellule, soit sur une sélection d'une plage de cellules.
Pouvez-vous m'aider ?
Voici mon ébauche de script ... mais ça coince :
[code] Sub inMillionEur() If TypeName(Selection) <> "Range" Then Exit Sub Application.ScreenUpdating = False For Each cell In Selection ' Si la cellule est vide, passer à la suivante If IsEmpty(cell) Then GoTo NextCell ' Si la cellule ne contient pas de donnée numérique, passer à la suivante If IsNumeric(cell) = False Then GoTo NextCell ' Si la cellule contient une formule If cell.HasFormula Then newValue = cell.Formula & "/1000000" cell.Formula = newValue '-----> problème !!!!! ' si la cellule contient une valeur Else ' Conversion cell.Value = cell / 1000000 End If
' Formater la cellule FormatCell: cell.NumberFormat = "#,#0.0"
' Passer à la cellule suivante NextCell: Next cell Application.ScreenUpdating = True End Sub [/code]
Merci pour votre attention et votre aide.
Nathalie
bourby
Daniel wrote:
Bonjour. Essaie le format personnalisé : "# .0" (sans les ") soit dièse, espace, espace, point, zéro. Cordialement. Daniel "Talboum" a écrit dans le message de news:
Bonjour,
Soyez indulgents, je débute :whistle:
J'ai des feuilles excel comportant des formules qui sont des références à d'autres fichiers en général, des montants.
Ces montants, je dois tous les diviser par 1000000 et les afficher en format 0,0.
Par exemple : Cellule A1 contient =('C:[reference.xls]Onglet 1'!C217) et donne comme valeur : 1 234 567,5
qui doit devenir : 1,2
MAIS sans perdre la référence, donc un truc du style : =('C:[reference.xls]Onglet 1'!C217)/1000000
J'aimerais une macro qui fasse cela soit sur une sélection d'une cellule, soit sur une sélection d'une plage de cellules.
Pouvez-vous m'aider ?
Voici mon ébauche de script ... mais ça coince :
[code] Sub inMillionEur() If TypeName(Selection) <> "Range" Then Exit Sub Application.ScreenUpdating = False For Each cell In Selection ' Si la cellule est vide, passer à la suivante If IsEmpty(cell) Then GoTo NextCell ' Si la cellule ne contient pas de donnée numérique, passer à la suivante If IsNumeric(cell) = False Then GoTo NextCell ' Si la cellule contient une formule If cell.HasFormula Then newValue = cell.Formula & "/1000000" cell.Formula = newValue '-----> problème !!!!! ' si la cellule contient une valeur Else ' Conversion cell.Value = cell / 1000000 End If
' Formater la cellule FormatCell: cell.NumberFormat = "#,#0.0"
' Passer à la cellule suivante NextCell: Next cell Application.ScreenUpdating = True End Sub [/code]
Merci pour votre attention et votre aide.
Nathalie
Bonjour,
à signaler que ces formats,fort pratiques, ne changent que l'affichage: la valeur cotenue dans la cellule n'est pas divisée.
Cordialement
Daniel wrote:
Bonjour.
Essaie le format personnalisé : "# .0" (sans les ") soit dièse, espace,
espace, point, zéro.
Cordialement.
Daniel
"Talboum" <talboum@yahoo.com> a écrit dans le message de news:
1141141032.986298.146480@j33g2000cwa.googlegroups.com...
Bonjour,
Soyez indulgents, je débute :whistle:
J'ai des feuilles excel comportant des formules qui sont des
références à d'autres fichiers en général, des montants.
Ces montants, je dois tous les diviser par 1000000 et les afficher en
format 0,0.
Par exemple :
Cellule A1 contient =('C:[reference.xls]Onglet 1'!C217)
et donne comme valeur : 1 234 567,5
qui doit devenir : 1,2
MAIS sans perdre la référence, donc un truc du style :
=('C:[reference.xls]Onglet 1'!C217)/1000000
J'aimerais une macro qui fasse cela soit sur une sélection d'une
cellule, soit sur une sélection d'une plage de cellules.
Pouvez-vous m'aider ?
Voici mon ébauche de script ... mais ça coince :
[code]
Sub inMillionEur()
If TypeName(Selection) <> "Range" Then Exit Sub
Application.ScreenUpdating = False
For Each cell In Selection
' Si la cellule est vide, passer à la suivante
If IsEmpty(cell) Then GoTo NextCell
' Si la cellule ne contient pas de donnée numérique, passer à la
suivante
If IsNumeric(cell) = False Then GoTo NextCell
' Si la cellule contient une formule
If cell.HasFormula Then
newValue = cell.Formula & "/1000000"
cell.Formula = newValue '-----> problème !!!!!
' si la cellule contient une valeur
Else
' Conversion
cell.Value = cell / 1000000
End If
' Formater la cellule
FormatCell:
cell.NumberFormat = "#,#0.0"
' Passer à la cellule suivante
NextCell:
Next cell
Application.ScreenUpdating = True
End Sub
[/code]
Merci pour votre attention et votre aide.
Nathalie
Bonjour,
à signaler que ces formats,fort pratiques, ne changent que l'affichage:
la valeur cotenue dans la cellule n'est pas divisée.
Bonjour. Essaie le format personnalisé : "# .0" (sans les ") soit dièse, espace, espace, point, zéro. Cordialement. Daniel "Talboum" a écrit dans le message de news:
Bonjour,
Soyez indulgents, je débute :whistle:
J'ai des feuilles excel comportant des formules qui sont des références à d'autres fichiers en général, des montants.
Ces montants, je dois tous les diviser par 1000000 et les afficher en format 0,0.
Par exemple : Cellule A1 contient =('C:[reference.xls]Onglet 1'!C217) et donne comme valeur : 1 234 567,5
qui doit devenir : 1,2
MAIS sans perdre la référence, donc un truc du style : =('C:[reference.xls]Onglet 1'!C217)/1000000
J'aimerais une macro qui fasse cela soit sur une sélection d'une cellule, soit sur une sélection d'une plage de cellules.
Pouvez-vous m'aider ?
Voici mon ébauche de script ... mais ça coince :
[code] Sub inMillionEur() If TypeName(Selection) <> "Range" Then Exit Sub Application.ScreenUpdating = False For Each cell In Selection ' Si la cellule est vide, passer à la suivante If IsEmpty(cell) Then GoTo NextCell ' Si la cellule ne contient pas de donnée numérique, passer à la suivante If IsNumeric(cell) = False Then GoTo NextCell ' Si la cellule contient une formule If cell.HasFormula Then newValue = cell.Formula & "/1000000" cell.Formula = newValue '-----> problème !!!!! ' si la cellule contient une valeur Else ' Conversion cell.Value = cell / 1000000 End If
' Formater la cellule FormatCell: cell.NumberFormat = "#,#0.0"
' Passer à la cellule suivante NextCell: Next cell Application.ScreenUpdating = True End Sub [/code]
Merci pour votre attention et votre aide.
Nathalie
Bonjour,
à signaler que ces formats,fort pratiques, ne changent que l'affichage: la valeur cotenue dans la cellule n'est pas divisée.
Cordialement
Daniel
Bonsoir. Très juste. j'avais lu en travers. Pour me faire pardonner :
Sub test() Dim c As Range, Formule As String For Each c In Selection If Left(c.Formula, 1) = "=" Then c.Formula = "=(" & Right(c.Formula, Len(c.Formula) - 1) & ")/1000000" c.NumberFormat = "0.0" End If Next c End Sub
Cordialement. Daniel "bourby" a écrit dans le message de news:
Daniel wrote:
Bonjour. Essaie le format personnalisé : "# .0" (sans les ") soit dièse, espace, espace, point, zéro. Cordialement. Daniel "Talboum" a écrit dans le message de news:
Bonjour,
Soyez indulgents, je débute :whistle:
J'ai des feuilles excel comportant des formules qui sont des références à d'autres fichiers en général, des montants.
Ces montants, je dois tous les diviser par 1000000 et les afficher en format 0,0.
Par exemple : Cellule A1 contient =('C:[reference.xls]Onglet 1'!C217) et donne comme valeur : 1 234 567,5
qui doit devenir : 1,2
MAIS sans perdre la référence, donc un truc du style : =('C:[reference.xls]Onglet 1'!C217)/1000000
J'aimerais une macro qui fasse cela soit sur une sélection d'une cellule, soit sur une sélection d'une plage de cellules.
Pouvez-vous m'aider ?
Voici mon ébauche de script ... mais ça coince :
[code] Sub inMillionEur() If TypeName(Selection) <> "Range" Then Exit Sub Application.ScreenUpdating = False For Each cell In Selection ' Si la cellule est vide, passer à la suivante If IsEmpty(cell) Then GoTo NextCell ' Si la cellule ne contient pas de donnée numérique, passer à la suivante If IsNumeric(cell) = False Then GoTo NextCell ' Si la cellule contient une formule If cell.HasFormula Then newValue = cell.Formula & "/1000000" cell.Formula = newValue '-----> problème !!!!! ' si la cellule contient une valeur Else ' Conversion cell.Value = cell / 1000000 End If
' Formater la cellule FormatCell: cell.NumberFormat = "#,#0.0"
' Passer à la cellule suivante NextCell: Next cell Application.ScreenUpdating = True End Sub [/code]
Merci pour votre attention et votre aide.
Nathalie
Bonjour,
à signaler que ces formats,fort pratiques, ne changent que l'affichage: la valeur cotenue dans la cellule n'est pas divisée.
Cordialement
Bonsoir.
Très juste. j'avais lu en travers. Pour me faire pardonner :
Sub test()
Dim c As Range, Formule As String
For Each c In Selection
If Left(c.Formula, 1) = "=" Then
c.Formula = "=(" & Right(c.Formula, Len(c.Formula) - 1) &
")/1000000"
c.NumberFormat = "0.0"
End If
Next c
End Sub
Cordialement.
Daniel
"bourby" <jchfer@wanadoo.fr> a écrit dans le message de news:
uL85wCLPGHA.3100@tk2msftngp13.phx.gbl...
Daniel wrote:
Bonjour.
Essaie le format personnalisé : "# .0" (sans les ") soit dièse, espace,
espace, point, zéro.
Cordialement.
Daniel
"Talboum" <talboum@yahoo.com> a écrit dans le message de news:
1141141032.986298.146480@j33g2000cwa.googlegroups.com...
Bonjour,
Soyez indulgents, je débute :whistle:
J'ai des feuilles excel comportant des formules qui sont des
références à d'autres fichiers en général, des montants.
Ces montants, je dois tous les diviser par 1000000 et les afficher en
format 0,0.
Par exemple :
Cellule A1 contient =('C:[reference.xls]Onglet 1'!C217)
et donne comme valeur : 1 234 567,5
qui doit devenir : 1,2
MAIS sans perdre la référence, donc un truc du style :
=('C:[reference.xls]Onglet 1'!C217)/1000000
J'aimerais une macro qui fasse cela soit sur une sélection d'une
cellule, soit sur une sélection d'une plage de cellules.
Pouvez-vous m'aider ?
Voici mon ébauche de script ... mais ça coince :
[code]
Sub inMillionEur()
If TypeName(Selection) <> "Range" Then Exit Sub
Application.ScreenUpdating = False
For Each cell In Selection
' Si la cellule est vide, passer à la suivante
If IsEmpty(cell) Then GoTo NextCell
' Si la cellule ne contient pas de donnée numérique, passer à la
suivante
If IsNumeric(cell) = False Then GoTo NextCell
' Si la cellule contient une formule
If cell.HasFormula Then
newValue = cell.Formula & "/1000000"
cell.Formula = newValue '-----> problème !!!!!
' si la cellule contient une valeur
Else
' Conversion
cell.Value = cell / 1000000
End If
' Formater la cellule
FormatCell:
cell.NumberFormat = "#,#0.0"
' Passer à la cellule suivante
NextCell:
Next cell
Application.ScreenUpdating = True
End Sub
[/code]
Merci pour votre attention et votre aide.
Nathalie
Bonjour,
à signaler que ces formats,fort pratiques, ne changent que l'affichage: la
valeur cotenue dans la cellule n'est pas divisée.
Bonsoir. Très juste. j'avais lu en travers. Pour me faire pardonner :
Sub test() Dim c As Range, Formule As String For Each c In Selection If Left(c.Formula, 1) = "=" Then c.Formula = "=(" & Right(c.Formula, Len(c.Formula) - 1) & ")/1000000" c.NumberFormat = "0.0" End If Next c End Sub
Cordialement. Daniel "bourby" a écrit dans le message de news:
Daniel wrote:
Bonjour. Essaie le format personnalisé : "# .0" (sans les ") soit dièse, espace, espace, point, zéro. Cordialement. Daniel "Talboum" a écrit dans le message de news:
Bonjour,
Soyez indulgents, je débute :whistle:
J'ai des feuilles excel comportant des formules qui sont des références à d'autres fichiers en général, des montants.
Ces montants, je dois tous les diviser par 1000000 et les afficher en format 0,0.
Par exemple : Cellule A1 contient =('C:[reference.xls]Onglet 1'!C217) et donne comme valeur : 1 234 567,5
qui doit devenir : 1,2
MAIS sans perdre la référence, donc un truc du style : =('C:[reference.xls]Onglet 1'!C217)/1000000
J'aimerais une macro qui fasse cela soit sur une sélection d'une cellule, soit sur une sélection d'une plage de cellules.
Pouvez-vous m'aider ?
Voici mon ébauche de script ... mais ça coince :
[code] Sub inMillionEur() If TypeName(Selection) <> "Range" Then Exit Sub Application.ScreenUpdating = False For Each cell In Selection ' Si la cellule est vide, passer à la suivante If IsEmpty(cell) Then GoTo NextCell ' Si la cellule ne contient pas de donnée numérique, passer à la suivante If IsNumeric(cell) = False Then GoTo NextCell ' Si la cellule contient une formule If cell.HasFormula Then newValue = cell.Formula & "/1000000" cell.Formula = newValue '-----> problème !!!!! ' si la cellule contient une valeur Else ' Conversion cell.Value = cell / 1000000 End If
' Formater la cellule FormatCell: cell.NumberFormat = "#,#0.0"
' Passer à la cellule suivante NextCell: Next cell Application.ScreenUpdating = True End Sub [/code]
Merci pour votre attention et votre aide.
Nathalie
Bonjour,
à signaler que ces formats,fort pratiques, ne changent que l'affichage: la valeur cotenue dans la cellule n'est pas divisée.
Cordialement
Talboum
Merci Daniel et Bourby,
Première question :
J'ai cependant encore un problème,
A savoir une fenêtre qui s'ouvre "update values" à la recherche de mon fichier references.xls. Fichier que je ne veucx évidemment PAS modifier ! Comment empêcher cela ?
Deuxième question :
Je constate que quand je lance mes macros, je ne peux pas faire marche arrière (undo) ... Faut-il donc aussi programmer des macros de retour en arrière ?
Je n'ai pas l'habitude, je débute, merci donc pour votre patience.
Bonne journée,
Nathalie
Merci Daniel et Bourby,
Première question :
J'ai cependant encore un problème,
A savoir une fenêtre qui s'ouvre "update values" à la recherche de
mon fichier references.xls.
Fichier que je ne veucx évidemment PAS modifier ! Comment empêcher
cela ?
Deuxième question :
Je constate que quand je lance mes macros, je ne peux pas faire marche
arrière (undo) ...
Faut-il donc aussi programmer des macros de retour en arrière ?
Je n'ai pas l'habitude, je débute, merci donc pour votre patience.
A savoir une fenêtre qui s'ouvre "update values" à la recherche de mon fichier references.xls. Fichier que je ne veucx évidemment PAS modifier ! Comment empêcher cela ?
Deuxième question :
Je constate que quand je lance mes macros, je ne peux pas faire marche arrière (undo) ... Faut-il donc aussi programmer des macros de retour en arrière ?
Je n'ai pas l'habitude, je débute, merci donc pour votre patience.
Bonne journée,
Nathalie
Daniel
Bonjour. Pour le premier point, ça ne seproduit pas chez moi. Essaie :
Sub test() Dim c As Range, Formule As String, Var Var = ActiveWorkbook.UpdateLinks ActiveWorkbook.UpdateLinks = 2 For Each c In Selection If Left(c.Formula, 1) = "=" Then c.Formula = "=(" & Right(c.Formula, Len(c.Formula) - 1) & _ ")/1000000" c.NumberFormat = "0.0" End If Next c ActiveWorkbook.UpdateLinks = Var End Sub
Pour le second, il faut écrire la macro inverse. En général, fais une sauvegarde de ton classeur avant d'exécuter une macro de test. Cordialement. "Talboum" a écrit dans le message de news:
Merci Daniel et Bourby,
Première question :
J'ai cependant encore un problème,
A savoir une fenêtre qui s'ouvre "update values" à la recherche de mon fichier references.xls. Fichier que je ne veucx évidemment PAS modifier ! Comment empêcher cela ?
Deuxième question :
Je constate que quand je lance mes macros, je ne peux pas faire marche arrière (undo) ... Faut-il donc aussi programmer des macros de retour en arrière ?
Je n'ai pas l'habitude, je débute, merci donc pour votre patience.
Bonne journée,
Nathalie
Bonjour.
Pour le premier point, ça ne seproduit pas chez moi. Essaie :
Sub test()
Dim c As Range, Formule As String, Var
Var = ActiveWorkbook.UpdateLinks
ActiveWorkbook.UpdateLinks = 2
For Each c In Selection
If Left(c.Formula, 1) = "=" Then
c.Formula = "=(" & Right(c.Formula, Len(c.Formula) - 1) & _
")/1000000"
c.NumberFormat = "0.0"
End If
Next c
ActiveWorkbook.UpdateLinks = Var
End Sub
Pour le second, il faut écrire la macro inverse. En général, fais une
sauvegarde de ton classeur avant d'exécuter une macro de test.
Cordialement.
"Talboum" <talboum@yahoo.com> a écrit dans le message de news:
1141208479.867138.195670@j33g2000cwa.googlegroups.com...
Merci Daniel et Bourby,
Première question :
J'ai cependant encore un problème,
A savoir une fenêtre qui s'ouvre "update values" à la recherche de
mon fichier references.xls.
Fichier que je ne veucx évidemment PAS modifier ! Comment empêcher
cela ?
Deuxième question :
Je constate que quand je lance mes macros, je ne peux pas faire marche
arrière (undo) ...
Faut-il donc aussi programmer des macros de retour en arrière ?
Je n'ai pas l'habitude, je débute, merci donc pour votre patience.
Bonjour. Pour le premier point, ça ne seproduit pas chez moi. Essaie :
Sub test() Dim c As Range, Formule As String, Var Var = ActiveWorkbook.UpdateLinks ActiveWorkbook.UpdateLinks = 2 For Each c In Selection If Left(c.Formula, 1) = "=" Then c.Formula = "=(" & Right(c.Formula, Len(c.Formula) - 1) & _ ")/1000000" c.NumberFormat = "0.0" End If Next c ActiveWorkbook.UpdateLinks = Var End Sub
Pour le second, il faut écrire la macro inverse. En général, fais une sauvegarde de ton classeur avant d'exécuter une macro de test. Cordialement. "Talboum" a écrit dans le message de news:
Merci Daniel et Bourby,
Première question :
J'ai cependant encore un problème,
A savoir une fenêtre qui s'ouvre "update values" à la recherche de mon fichier references.xls. Fichier que je ne veucx évidemment PAS modifier ! Comment empêcher cela ?
Deuxième question :
Je constate que quand je lance mes macros, je ne peux pas faire marche arrière (undo) ... Faut-il donc aussi programmer des macros de retour en arrière ?
Je n'ai pas l'habitude, je débute, merci donc pour votre patience.
Bonne journée,
Nathalie
Talboum
Encore merci Daniel :-)
Pour le premier point pareil ... il ouvre toujours une fenêtre 'Update values' pour que je lui indique le fichier references.xls.
Pour le second point, je dois faire un truc du style :
Sub FaisLe Application.onundo "Défaire ma macro FaisLe","NeLeFaisPas" ... End Sub
Sub NeLeFaisPas ... End Sub
C'est bien ça ?
:-)
Nathalie
Encore merci Daniel :-)
Pour le premier point pareil ... il ouvre toujours une fenêtre 'Update
values' pour que je lui indique le fichier references.xls.
Pour le second point, je dois faire un truc du style :
Sub FaisLe
Application.onundo "Défaire ma macro FaisLe","NeLeFaisPas"
...
End Sub
Pour le premier point pareil ... il ouvre toujours une fenêtre 'Update values' pour que je lui indique le fichier references.xls.
Pour le second point, je dois faire un truc du style :
Sub FaisLe Application.onundo "Défaire ma macro FaisLe","NeLeFaisPas" ... End Sub
Sub NeLeFaisPas ... End Sub
C'est bien ça ?
:-)
Nathalie
Daniel
Pour le premier point, je ne sais vraiment pas. Peux-tu mettre ton classeur sur www.cjoint.com ? Pour le second (à utiliser avec pruddence) :
Sub DefaisLe() Dim c As Range, Formule As String For Each c In Selection If Left(c.Formula, 2) = "=(" And Right(c.Formula, 9) = ")/1000000" Then c.Formula = "=" & Mid(c.Formula, 3, Len(c.Formula) - 11) End If Next c End Sub
Avec cette réserve qu'aucune formule initiale ne se terminait par /1000000. Daniel "Talboum" a écrit dans le message de news:
Encore merci Daniel :-)
Pour le premier point pareil ... il ouvre toujours une fenêtre 'Update values' pour que je lui indique le fichier references.xls.
Pour le second point, je dois faire un truc du style :
Sub FaisLe Application.onundo "Défaire ma macro FaisLe","NeLeFaisPas" ... End Sub
Sub NeLeFaisPas ... End Sub
C'est bien ça ?
:-)
Nathalie
Pour le premier point, je ne sais vraiment pas. Peux-tu mettre ton classeur
sur www.cjoint.com ?
Pour le second (à utiliser avec pruddence) :
Sub DefaisLe()
Dim c As Range, Formule As String
For Each c In Selection
If Left(c.Formula, 2) = "=(" And Right(c.Formula, 9) = ")/1000000"
Then
c.Formula = "=" & Mid(c.Formula, 3, Len(c.Formula) - 11)
End If
Next c
End Sub
Avec cette réserve qu'aucune formule initiale ne se terminait par /1000000.
Daniel
"Talboum" <talboum@yahoo.com> a écrit dans le message de news:
1141212673.385315.26300@z34g2000cwc.googlegroups.com...
Encore merci Daniel :-)
Pour le premier point pareil ... il ouvre toujours une fenêtre 'Update
values' pour que je lui indique le fichier references.xls.
Pour le second point, je dois faire un truc du style :
Sub FaisLe
Application.onundo "Défaire ma macro FaisLe","NeLeFaisPas"
...
End Sub
Pour le premier point, je ne sais vraiment pas. Peux-tu mettre ton classeur sur www.cjoint.com ? Pour le second (à utiliser avec pruddence) :
Sub DefaisLe() Dim c As Range, Formule As String For Each c In Selection If Left(c.Formula, 2) = "=(" And Right(c.Formula, 9) = ")/1000000" Then c.Formula = "=" & Mid(c.Formula, 3, Len(c.Formula) - 11) End If Next c End Sub
Avec cette réserve qu'aucune formule initiale ne se terminait par /1000000. Daniel "Talboum" a écrit dans le message de news:
Encore merci Daniel :-)
Pour le premier point pareil ... il ouvre toujours une fenêtre 'Update values' pour que je lui indique le fichier references.xls.
Pour le second point, je dois faire un truc du style :
Sub FaisLe Application.onundo "Défaire ma macro FaisLe","NeLeFaisPas" ... End Sub
Sub NeLeFaisPas ... End Sub
C'est bien ça ?
:-)
Nathalie
Talboum
Pour la question 1, c'est résolu. J'ai recommencé dans un fichier propre et je n'ai plus eu de problème ... probablement des crasses qui trainaient ... :-(
Pour la question 2. C'est nickel. Ton code me convient. Je l'adopte.
Je te remercie beaucoup et te souhaite une bonne journée.
A+
Nathalie
Pour la question 1, c'est résolu. J'ai recommencé dans un fichier
propre et je n'ai plus eu de problème ... probablement des crasses qui
trainaient ... :-(
Pour la question 2. C'est nickel. Ton code me convient. Je l'adopte.
Je te remercie beaucoup et te souhaite une bonne journée.
Pour la question 1, c'est résolu. J'ai recommencé dans un fichier propre et je n'ai plus eu de problème ... probablement des crasses qui trainaient ... :-(
Pour la question 2. C'est nickel. Ton code me convient. Je l'adopte.
Je te remercie beaucoup et te souhaite une bonne journée.