J'ai écris une petite macro qui me permet de faire une correction dans une
cellule en gardant sa valeur d'origine.
exemple :
A1 =100
Correction 10
A1=100-10
Cela marche très bien pour des valeurs entières mais pas pour les autres.
J'ai en retour un erreur 1004 que je n'arrive pas à corriger.
voici le code écris :
Sub Test_Operation()
Dim i As Double
Dim Col_rep As String
Col_rep = InputBox("Colonne a modifier :")
For i = 30 To ActiveSheet.Range("C65000").End(xlUp).Row
If IsEmpty(Range("AE" & i).Value) Then
Range("" & Col_rep & "" & i).Value = Range("" & Col_rep & "" &
i).Value
Else
Range("" & Col_rep & "" & i).Formula = "=" & Range("" & Col_rep & ""
& i).Value & " - " & Range("AE" & i).Value
Range("" & Col_rep & "" & i).Select
Selection.Font.ColorIndex = 5
End If
Next i
End sub
Sub Test_Operation() Dim i As Double Dim Col_rep As String Col_rep = InputBox("Colonne a modifier :") For i = 1 To ActiveSheet.Range("C65000").End(xlUp).Row If IsEmpty(Range("AE" & i)) Then Range(Col_rep & i) = Range(Col_rep & i) Else With Range(Col_rep & i) .Formula = "=" & Range(Col_rep & i) & " - " & Range("AE" & i) .Font.ColorIndex = 5 .NumberFormat = "0.000000" ' à adapter End With End If Next i End Sub
isabelle
ttcpp a écrit :
J'ai essayé .value Cela fonctionne sur des entiers mais pas sur des valeurs décimales (à moins que cela soit à cause de ma config excel)
"michdenis" wrote:
| En fait c'est la valeur de la cellule AE et non son adresse qu'il faut que | je récupére.
Dans le code, tu changes la propriété .address(0,0) pour .Value
bonjour Thierry ,
dit moi si ça te va,
Sub Test_Operation()
Dim i As Double
Dim Col_rep As String
Col_rep = InputBox("Colonne a modifier :")
For i = 1 To ActiveSheet.Range("C65000").End(xlUp).Row
If IsEmpty(Range("AE" & i)) Then
Range(Col_rep & i) = Range(Col_rep & i)
Else
With Range(Col_rep & i)
.Formula = "=" & Range(Col_rep & i) & " - " & Range("AE" & i)
.Font.ColorIndex = 5
.NumberFormat = "0.000000" ' à adapter
End With
End If
Next i
End Sub
isabelle
ttcpp a écrit :
J'ai essayé .value
Cela fonctionne sur des entiers mais pas sur des valeurs décimales (à moins
que cela soit à cause de ma config excel)
"michdenis" wrote:
| En fait c'est la valeur de la cellule AE et non son adresse qu'il faut que
| je récupére.
Dans le code, tu changes la propriété .address(0,0) pour .Value
Sub Test_Operation() Dim i As Double Dim Col_rep As String Col_rep = InputBox("Colonne a modifier :") For i = 1 To ActiveSheet.Range("C65000").End(xlUp).Row If IsEmpty(Range("AE" & i)) Then Range(Col_rep & i) = Range(Col_rep & i) Else With Range(Col_rep & i) .Formula = "=" & Range(Col_rep & i) & " - " & Range("AE" & i) .Font.ColorIndex = 5 .NumberFormat = "0.000000" ' à adapter End With End If Next i End Sub
isabelle
ttcpp a écrit :
J'ai essayé .value Cela fonctionne sur des entiers mais pas sur des valeurs décimales (à moins que cela soit à cause de ma config excel)
"michdenis" wrote:
| En fait c'est la valeur de la cellule AE et non son adresse qu'il faut que | je récupére.
Dans le code, tu changes la propriété .address(0,0) pour .Value
michdenis
C'est une question de format de cellule !
Barre des menus / format / cellules /onglet nombre / item : Nombre et tu choisis le nombre de décimal après le point que tu désires afficher
ou tu peux ajouter une ligne à ta procédure pour désigner le format
With Range(Col_rep & i) .Formula = "=" & _ Range(Col_rep & i).Value & " - " & _ Range("AE" & i).Address(0, 0) .Font.ColorIndex = 5 .NumberFormat = "# ##0.0000" 'Le format que tu désires End With
"ttcpp" a écrit dans le message de groupe de discussion : J'ai essayé .value Cela fonctionne sur des entiers mais pas sur des valeurs décimales (à moins que cela soit à cause de ma config excel)
"michdenis" wrote:
| En fait c'est la valeur de la cellule AE et non son adresse qu'il faut que | je récupére.
Dans le code, tu changes la propriété .address(0,0) pour .Value
C'est une question de format de cellule !
Barre des menus / format / cellules /onglet nombre / item : Nombre
et tu choisis le nombre de décimal après le point que tu désires afficher
ou tu peux ajouter une ligne à ta procédure pour désigner le format
With Range(Col_rep & i)
.Formula = "=" & _
Range(Col_rep & i).Value & " - " & _
Range("AE" & i).Address(0, 0)
.Font.ColorIndex = 5
.NumberFormat = "# ##0.0000" 'Le format que tu désires
End With
"ttcpp" <ttcpp@discussions.microsoft.com> a écrit dans le message de groupe de discussion
: 3D081592-60A8-4B7C-AB5D-61D71BD852A5@microsoft.com...
J'ai essayé .value
Cela fonctionne sur des entiers mais pas sur des valeurs décimales (à moins
que cela soit à cause de ma config excel)
"michdenis" wrote:
| En fait c'est la valeur de la cellule AE et non son adresse qu'il faut que
| je récupére.
Dans le code, tu changes la propriété .address(0,0) pour .Value
Barre des menus / format / cellules /onglet nombre / item : Nombre et tu choisis le nombre de décimal après le point que tu désires afficher
ou tu peux ajouter une ligne à ta procédure pour désigner le format
With Range(Col_rep & i) .Formula = "=" & _ Range(Col_rep & i).Value & " - " & _ Range("AE" & i).Address(0, 0) .Font.ColorIndex = 5 .NumberFormat = "# ##0.0000" 'Le format que tu désires End With
"ttcpp" a écrit dans le message de groupe de discussion : J'ai essayé .value Cela fonctionne sur des entiers mais pas sur des valeurs décimales (à moins que cela soit à cause de ma config excel)
"michdenis" wrote:
| En fait c'est la valeur de la cellule AE et non son adresse qu'il faut que | je récupére.
Dans le code, tu changes la propriété .address(0,0) pour .Value
ttcpp
Désolé, mais cela ne résoud pas du tout le problème. En résumé Si je met With Range(Col_rep & i) .Formula = "=" & _ Range(Col_rep & i).Value & " - " & _ Range("E" & i).Address(0, 0) .Font.ColorIndex = 5
End With Je récupére dans ma cellule C3 = 12455,00-AE3 (au lieu de la valeur AE3)
si je met With Range(Col_rep & i) .Formula = "=" & _ Range(Col_rep & i).Value & " - " & _ Range("E" & i).Value .Font.ColorIndex = 5 End With Je récupére dans ma cellule C3 = 12455,00 - 125,00 (car AE3 est un entier) sinon j'ai C3= 12455,00 (il prend pas la valeur AE3 si c'est une décimale) A première vue, cela a l'air simple à construire mais difficile à mettre en oeuvre
"michdenis" wrote:
C'est une question de format de cellule !
Barre des menus / format / cellules /onglet nombre / item : Nombre et tu choisis le nombre de décimal après le point que tu désires afficher
ou tu peux ajouter une ligne à ta procédure pour désigner le format
With Range(Col_rep & i) .Formula = "=" & _ Range(Col_rep & i).Value & " - " & _ Range("AE" & i).Address(0, 0) .Font.ColorIndex = 5 .NumberFormat = "# ##0.0000" 'Le format que tu désires End With
"ttcpp" a écrit dans le message de groupe de discussion : J'ai essayé .value Cela fonctionne sur des entiers mais pas sur des valeurs décimales (à moins que cela soit à cause de ma config excel)
"michdenis" wrote:
> | En fait c'est la valeur de la cellule AE et non son adresse qu'il faut que > | je récupére. > > Dans le code, tu changes la propriété .address(0,0) pour .Value > > > >
Désolé, mais cela ne résoud pas du tout le problème.
En résumé
Si je met
With Range(Col_rep & i)
.Formula = "=" & _
Range(Col_rep & i).Value & " - " & _
Range("E" & i).Address(0, 0)
.Font.ColorIndex = 5
End With
Je récupére dans ma cellule C3 = 12455,00-AE3 (au lieu de la valeur AE3)
si je met
With Range(Col_rep & i)
.Formula = "=" & _
Range(Col_rep & i).Value & " - " & _
Range("E" & i).Value
.Font.ColorIndex = 5
End With
Je récupére dans ma cellule C3 = 12455,00 - 125,00 (car AE3 est un entier)
sinon j'ai C3= 12455,00 (il prend pas la valeur AE3 si c'est une décimale)
A première vue, cela a l'air simple à construire mais difficile à mettre en
oeuvre
"michdenis" wrote:
C'est une question de format de cellule !
Barre des menus / format / cellules /onglet nombre / item : Nombre
et tu choisis le nombre de décimal après le point que tu désires afficher
ou tu peux ajouter une ligne à ta procédure pour désigner le format
With Range(Col_rep & i)
.Formula = "=" & _
Range(Col_rep & i).Value & " - " & _
Range("AE" & i).Address(0, 0)
.Font.ColorIndex = 5
.NumberFormat = "# ##0.0000" 'Le format que tu désires
End With
"ttcpp" <ttcpp@discussions.microsoft.com> a écrit dans le message de groupe de discussion
: 3D081592-60A8-4B7C-AB5D-61D71BD852A5@microsoft.com...
J'ai essayé .value
Cela fonctionne sur des entiers mais pas sur des valeurs décimales (à moins
que cela soit à cause de ma config excel)
"michdenis" wrote:
> | En fait c'est la valeur de la cellule AE et non son adresse qu'il faut que
> | je récupére.
>
> Dans le code, tu changes la propriété .address(0,0) pour .Value
>
>
>
>
Désolé, mais cela ne résoud pas du tout le problème. En résumé Si je met With Range(Col_rep & i) .Formula = "=" & _ Range(Col_rep & i).Value & " - " & _ Range("E" & i).Address(0, 0) .Font.ColorIndex = 5
End With Je récupére dans ma cellule C3 = 12455,00-AE3 (au lieu de la valeur AE3)
si je met With Range(Col_rep & i) .Formula = "=" & _ Range(Col_rep & i).Value & " - " & _ Range("E" & i).Value .Font.ColorIndex = 5 End With Je récupére dans ma cellule C3 = 12455,00 - 125,00 (car AE3 est un entier) sinon j'ai C3= 12455,00 (il prend pas la valeur AE3 si c'est une décimale) A première vue, cela a l'air simple à construire mais difficile à mettre en oeuvre
"michdenis" wrote:
C'est une question de format de cellule !
Barre des menus / format / cellules /onglet nombre / item : Nombre et tu choisis le nombre de décimal après le point que tu désires afficher
ou tu peux ajouter une ligne à ta procédure pour désigner le format
With Range(Col_rep & i) .Formula = "=" & _ Range(Col_rep & i).Value & " - " & _ Range("AE" & i).Address(0, 0) .Font.ColorIndex = 5 .NumberFormat = "# ##0.0000" 'Le format que tu désires End With
"ttcpp" a écrit dans le message de groupe de discussion : J'ai essayé .value Cela fonctionne sur des entiers mais pas sur des valeurs décimales (à moins que cela soit à cause de ma config excel)
"michdenis" wrote:
> | En fait c'est la valeur de la cellule AE et non son adresse qu'il faut que > | je récupére. > > Dans le code, tu changes la propriété .address(0,0) pour .Value > > > >
Alain
Le problème est que tu utilise la propriété Formula qui ne peut prendre un nombre décimal qu'en format américain avec le point comme séparateur décimal alors que la propriété Value va te retourner le nombre avec une virgule... La solution consiste a plutôt utiliser la propriété FormulaLocal qui va accepter un nombre avec la virgule comme séparateur décimal...
Sub Test_Operation() Dim i As Integer Dim Col_rep As String Col_rep = InputBox("Colonne a modifier :") If Col_rep = "" Then Exit Sub Const Debut = 30, Col_ajust = "AE" For i = Debut To ActiveSheet.Columns(Col_rep).Rows(Debut).End(xlDown).Row If Not IsEmpty(Range(Col_ajust & i).Value) Then With Range(Col_rep & i) .FormulaLocal = "=" & _ Range(Col_rep & i).Value & "-" & _ Range(Col_ajust & i).Value .Font.ColorIndex = 5 End With End If Next i End Sub
"ttcpp" wrote in message news:
Bonjour,
J'ai écris une petite macro qui me permet de faire une correction dans une cellule en gardant sa valeur d'origine. exemple : A1 0 Correction 10 A10-10 Cela marche très bien pour des valeurs entières mais pas pour les autres. J'ai en retour un erreur 1004 que je n'arrive pas à corriger.
voici le code écris : Sub Test_Operation() Dim i As Double Dim Col_rep As String Col_rep = InputBox("Colonne a modifier :")
For i = 30 To ActiveSheet.Range("C65000").End(xlUp).Row If IsEmpty(Range("AE" & i).Value) Then Range("" & Col_rep & "" & i).Value = Range("" & Col_rep & "" & i).Value Else Range("" & Col_rep & "" & i).Formula = "=" & Range("" & Col_rep & "" & i).Value & " - " & Range("AE" & i).Value Range("" & Col_rep & "" & i).Select Selection.Font.ColorIndex = 5 End If Next i End sub
Merci pour votre aide
Thierry
Le problème est que tu utilise la propriété Formula qui ne peut prendre un
nombre décimal qu'en format américain avec le point comme séparateur décimal
alors que la propriété Value va te retourner le nombre avec une virgule...
La solution consiste a plutôt utiliser la propriété FormulaLocal qui va
accepter un nombre avec la virgule comme séparateur décimal...
Sub Test_Operation()
Dim i As Integer
Dim Col_rep As String
Col_rep = InputBox("Colonne a modifier :")
If Col_rep = "" Then Exit Sub
Const Debut = 30, Col_ajust = "AE"
For i = Debut To ActiveSheet.Columns(Col_rep).Rows(Debut).End(xlDown).Row
If Not IsEmpty(Range(Col_ajust & i).Value) Then
With Range(Col_rep & i)
.FormulaLocal = "=" & _
Range(Col_rep & i).Value & "-" & _
Range(Col_ajust & i).Value
.Font.ColorIndex = 5
End With
End If
Next i
End Sub
"ttcpp" <ttcpp@discussions.microsoft.com> wrote in message
news:25C456C1-6AA7-4E29-8CCB-17E337006292@microsoft.com...
Bonjour,
J'ai écris une petite macro qui me permet de faire une correction dans une
cellule en gardant sa valeur d'origine.
exemple :
A1 0
Correction 10
A10-10
Cela marche très bien pour des valeurs entières mais pas pour les autres.
J'ai en retour un erreur 1004 que je n'arrive pas à corriger.
voici le code écris :
Sub Test_Operation()
Dim i As Double
Dim Col_rep As String
Col_rep = InputBox("Colonne a modifier :")
For i = 30 To ActiveSheet.Range("C65000").End(xlUp).Row
If IsEmpty(Range("AE" & i).Value) Then
Range("" & Col_rep & "" & i).Value = Range("" & Col_rep & "" &
i).Value
Else
Range("" & Col_rep & "" & i).Formula = "=" & Range("" & Col_rep &
""
& i).Value & " - " & Range("AE" & i).Value
Range("" & Col_rep & "" & i).Select
Selection.Font.ColorIndex = 5
End If
Next i
End sub
Le problème est que tu utilise la propriété Formula qui ne peut prendre un nombre décimal qu'en format américain avec le point comme séparateur décimal alors que la propriété Value va te retourner le nombre avec une virgule... La solution consiste a plutôt utiliser la propriété FormulaLocal qui va accepter un nombre avec la virgule comme séparateur décimal...
Sub Test_Operation() Dim i As Integer Dim Col_rep As String Col_rep = InputBox("Colonne a modifier :") If Col_rep = "" Then Exit Sub Const Debut = 30, Col_ajust = "AE" For i = Debut To ActiveSheet.Columns(Col_rep).Rows(Debut).End(xlDown).Row If Not IsEmpty(Range(Col_ajust & i).Value) Then With Range(Col_rep & i) .FormulaLocal = "=" & _ Range(Col_rep & i).Value & "-" & _ Range(Col_ajust & i).Value .Font.ColorIndex = 5 End With End If Next i End Sub
"ttcpp" wrote in message news:
Bonjour,
J'ai écris une petite macro qui me permet de faire une correction dans une cellule en gardant sa valeur d'origine. exemple : A1 0 Correction 10 A10-10 Cela marche très bien pour des valeurs entières mais pas pour les autres. J'ai en retour un erreur 1004 que je n'arrive pas à corriger.
voici le code écris : Sub Test_Operation() Dim i As Double Dim Col_rep As String Col_rep = InputBox("Colonne a modifier :")
For i = 30 To ActiveSheet.Range("C65000").End(xlUp).Row If IsEmpty(Range("AE" & i).Value) Then Range("" & Col_rep & "" & i).Value = Range("" & Col_rep & "" & i).Value Else Range("" & Col_rep & "" & i).Formula = "=" & Range("" & Col_rep & "" & i).Value & " - " & Range("AE" & i).Value Range("" & Col_rep & "" & i).Select Selection.Font.ColorIndex = 5 End If Next i End sub
Merci pour votre aide
Thierry
ttcpp
Un grand Merci Alain, c'est exactement ce que je voulais. En effet il n'y avait pas grand chose à faire : remplacer Formula par FormulaLocal Mais il fallait le savoir. ;) Merci aussi à michdenis pour son aide et sa patience.
"Alain" wrote:
Le problème est que tu utilise la propriété Formula qui ne peut prendre un nombre décimal qu'en format américain avec le point comme séparateur décimal alors que la propriété Value va te retourner le nombre avec une virgule... La solution consiste a plutôt utiliser la propriété FormulaLocal qui va accepter un nombre avec la virgule comme séparateur décimal...
Sub Test_Operation() Dim i As Integer Dim Col_rep As String Col_rep = InputBox("Colonne a modifier :") If Col_rep = "" Then Exit Sub Const Debut = 30, Col_ajust = "AE" For i = Debut To ActiveSheet.Columns(Col_rep).Rows(Debut).End(xlDown).Row If Not IsEmpty(Range(Col_ajust & i).Value) Then With Range(Col_rep & i) .FormulaLocal = "=" & _ Range(Col_rep & i).Value & "-" & _ Range(Col_ajust & i).Value .Font.ColorIndex = 5 End With End If Next i End Sub
"ttcpp" wrote in message news: > Bonjour, > > J'ai écris une petite macro qui me permet de faire une correction dans une > cellule en gardant sa valeur d'origine. > exemple : > A1 0 > Correction 10 > A10-10 > Cela marche très bien pour des valeurs entières mais pas pour les autres. > J'ai en retour un erreur 1004 que je n'arrive pas à corriger. > > voici le code écris : > Sub Test_Operation() > Dim i As Double > Dim Col_rep As String > Col_rep = InputBox("Colonne a modifier :") > > For i = 30 To ActiveSheet.Range("C65000").End(xlUp).Row > If IsEmpty(Range("AE" & i).Value) Then > Range("" & Col_rep & "" & i).Value = Range("" & Col_rep & "" & > i).Value > Else > Range("" & Col_rep & "" & i).Formula = "=" & Range("" & Col_rep & > "" > & i).Value & " - " & Range("AE" & i).Value > Range("" & Col_rep & "" & i).Select > Selection.Font.ColorIndex = 5 > End If > Next i > End sub > > Merci pour votre aide > > Thierry
Un grand Merci Alain, c'est exactement ce que je voulais.
En effet il n'y avait pas grand chose à faire : remplacer Formula par
FormulaLocal
Mais il fallait le savoir. ;)
Merci aussi à michdenis pour son aide et sa patience.
"Alain" wrote:
Le problème est que tu utilise la propriété Formula qui ne peut prendre un
nombre décimal qu'en format américain avec le point comme séparateur décimal
alors que la propriété Value va te retourner le nombre avec une virgule...
La solution consiste a plutôt utiliser la propriété FormulaLocal qui va
accepter un nombre avec la virgule comme séparateur décimal...
Sub Test_Operation()
Dim i As Integer
Dim Col_rep As String
Col_rep = InputBox("Colonne a modifier :")
If Col_rep = "" Then Exit Sub
Const Debut = 30, Col_ajust = "AE"
For i = Debut To ActiveSheet.Columns(Col_rep).Rows(Debut).End(xlDown).Row
If Not IsEmpty(Range(Col_ajust & i).Value) Then
With Range(Col_rep & i)
.FormulaLocal = "=" & _
Range(Col_rep & i).Value & "-" & _
Range(Col_ajust & i).Value
.Font.ColorIndex = 5
End With
End If
Next i
End Sub
"ttcpp" <ttcpp@discussions.microsoft.com> wrote in message
news:25C456C1-6AA7-4E29-8CCB-17E337006292@microsoft.com...
> Bonjour,
>
> J'ai écris une petite macro qui me permet de faire une correction dans une
> cellule en gardant sa valeur d'origine.
> exemple :
> A1 0
> Correction 10
> A10-10
> Cela marche très bien pour des valeurs entières mais pas pour les autres.
> J'ai en retour un erreur 1004 que je n'arrive pas à corriger.
>
> voici le code écris :
> Sub Test_Operation()
> Dim i As Double
> Dim Col_rep As String
> Col_rep = InputBox("Colonne a modifier :")
>
> For i = 30 To ActiveSheet.Range("C65000").End(xlUp).Row
> If IsEmpty(Range("AE" & i).Value) Then
> Range("" & Col_rep & "" & i).Value = Range("" & Col_rep & "" &
> i).Value
> Else
> Range("" & Col_rep & "" & i).Formula = "=" & Range("" & Col_rep &
> ""
> & i).Value & " - " & Range("AE" & i).Value
> Range("" & Col_rep & "" & i).Select
> Selection.Font.ColorIndex = 5
> End If
> Next i
> End sub
>
> Merci pour votre aide
>
> Thierry
Un grand Merci Alain, c'est exactement ce que je voulais. En effet il n'y avait pas grand chose à faire : remplacer Formula par FormulaLocal Mais il fallait le savoir. ;) Merci aussi à michdenis pour son aide et sa patience.
"Alain" wrote:
Le problème est que tu utilise la propriété Formula qui ne peut prendre un nombre décimal qu'en format américain avec le point comme séparateur décimal alors que la propriété Value va te retourner le nombre avec une virgule... La solution consiste a plutôt utiliser la propriété FormulaLocal qui va accepter un nombre avec la virgule comme séparateur décimal...
Sub Test_Operation() Dim i As Integer Dim Col_rep As String Col_rep = InputBox("Colonne a modifier :") If Col_rep = "" Then Exit Sub Const Debut = 30, Col_ajust = "AE" For i = Debut To ActiveSheet.Columns(Col_rep).Rows(Debut).End(xlDown).Row If Not IsEmpty(Range(Col_ajust & i).Value) Then With Range(Col_rep & i) .FormulaLocal = "=" & _ Range(Col_rep & i).Value & "-" & _ Range(Col_ajust & i).Value .Font.ColorIndex = 5 End With End If Next i End Sub
"ttcpp" wrote in message news: > Bonjour, > > J'ai écris une petite macro qui me permet de faire une correction dans une > cellule en gardant sa valeur d'origine. > exemple : > A1 0 > Correction 10 > A10-10 > Cela marche très bien pour des valeurs entières mais pas pour les autres. > J'ai en retour un erreur 1004 que je n'arrive pas à corriger. > > voici le code écris : > Sub Test_Operation() > Dim i As Double > Dim Col_rep As String > Col_rep = InputBox("Colonne a modifier :") > > For i = 30 To ActiveSheet.Range("C65000").End(xlUp).Row > If IsEmpty(Range("AE" & i).Value) Then > Range("" & Col_rep & "" & i).Value = Range("" & Col_rep & "" & > i).Value > Else > Range("" & Col_rep & "" & i).Formula = "=" & Range("" & Col_rep & > "" > & i).Value & " - " & Range("AE" & i).Value > Range("" & Col_rep & "" & i).Select > Selection.Font.ColorIndex = 5 > End If > Next i > End sub > > Merci pour votre aide > > Thierry