Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Insertion automatique dans un tableau

6 réponses
Avatar
Padawan
Bonjour à tous,

J'ai construit un tableau avec plein de formules de calcul. Je souhaiterai
ajouter automatiquement (car le tableau est immense) des "dollars" dans
toutes les formules. Est-ce possible ? Quelqu'un peut m'aider?
Merci pour toute réponse!!

6 réponses

Avatar
Daniel
Bonjour.
Essaie cette macro, mais avant, fais une sauvegarde de ton classeur. Elle
est très longue à l'exécution. Tu as largement le temps de dîner avant
qu'elle ne se termine car elle fait fait une recherche sur toutes les
celluless de A1 à IV65536. Aussi, si tu connais la référence la plus
éloignée de A1, tu peux diminuer le temps d'exécution en modifiant :
For x = 0 To 255
et
For i = 1 To 65536

Sub test()
Dim c As Range, ctemp As String
Dim TabloCol(255) As String
For i = 0 To 255
Var = Cells(1, i + 1).Address
If Mid(Var, 3, 1) >= "A" And Mid(Var, 3, 1) <= "Z" Then
TabloCol(i) = Mid(Var, 2, 2)
Else
TabloCol(i) = Mid(Var, 2, 1)
End If
Next i
For x = 0 To 255
For i = 1 To 65536
ActiveSheet.UsedRange.Replace what:=TabloCol(x) & i,
replacement:="$" & _
TabloCol(x) & "$" & i
Next i
Next x
End Sub

Cordialement.
Daniel
"Padawan" a écrit dans le message de
news:
Bonjour à tous,

J'ai construit un tableau avec plein de formules de calcul. Je souhaiterai
ajouter automatiquement (car le tableau est immense) des "dollars" dans
toutes les formules. Est-ce possible ? Quelqu'un peut m'aider?
Merci pour toute réponse!!


Avatar
Daniel
Une version plus rapide :

Sub test()
Dim c As Range, DerLigne As Long, DerCol As Integer
Dim TabloCol(255) As String
For i = 0 To 255
Var = Cells(1, i + 1).Address
If Mid(Var, 3, 1) >= "A" And Mid(Var, 3, 1) <= "Z" Then
TabloCol(i) = Mid(Var, 2, 2)
Else
TabloCol(i) = Mid(Var, 2, 1)
End If
Next i
For x = 255 To 0 Step -1
For i = 9 To 1 Step -1
Set c = ActiveSheet.UsedRange.Find(TabloCol(x) & i,
LookIn:=xlFormulas)
If Not c Is Nothing Then
DerCol = x
DerLigne = i
Exit For
End If
Next i
If DerCol <> 0 Then Exit For
Next x
For x = 0 To DerCol
For i = 1 To DerLigne
ActiveSheet.UsedRange.Replace what:=TabloCol(x) & i,
replacement:="$" & _
TabloCol(x) & "$" & i
Next i
Next x
End Sub

Daniel
"Daniel" a écrit dans le message de news:

Bonjour.
Essaie cette macro, mais avant, fais une sauvegarde de ton classeur. Elle
est très longue à l'exécution. Tu as largement le temps de dîner avant
qu'elle ne se termine car elle fait fait une recherche sur toutes les
celluless de A1 à IV65536. Aussi, si tu connais la référence la plus
éloignée de A1, tu peux diminuer le temps d'exécution en modifiant :
For x = 0 To 255
et
For i = 1 To 65536

Sub test()
Dim c As Range, ctemp As String
Dim TabloCol(255) As String
For i = 0 To 255
Var = Cells(1, i + 1).Address
If Mid(Var, 3, 1) >= "A" And Mid(Var, 3, 1) <= "Z" Then
TabloCol(i) = Mid(Var, 2, 2)
Else
TabloCol(i) = Mid(Var, 2, 1)
End If
Next i
For x = 0 To 255
For i = 1 To 65536
ActiveSheet.UsedRange.Replace what:=TabloCol(x) & i,
replacement:="$" & _
TabloCol(x) & "$" & i
Next i
Next x
End Sub

Cordialement.
Daniel
"Padawan" a écrit dans le message de
news:
Bonjour à tous,

J'ai construit un tableau avec plein de formules de calcul. Je
souhaiterai
ajouter automatiquement (car le tableau est immense) des "dollars" dans
toutes les formules. Est-ce possible ? Quelqu'un peut m'aider?
Merci pour toute réponse!!






Avatar
Ange Ounis
Autre approche possible :

http://frederic.sigonneau.free.fr/code/Feuilles/ReferencesAbsolues.txt

----------
Ange Ounis
----------

Bonjour à tous,

J'ai construit un tableau avec plein de formules de calcul. Je souhaiterai
ajouter automatiquement (car le tableau est immense) des "dollars" dans
toutes les formules. Est-ce possible ? Quelqu'un peut m'aider?
Merci pour toute réponse!!


Avatar
Daniel
Ne fonctionne pas. Je ne la corrige pas, vois la solution d'Ange Ounis.
Daniel
"Daniel" a écrit dans le message de news:
%
Une version plus rapide :

Sub test()
Dim c As Range, DerLigne As Long, DerCol As Integer
Dim TabloCol(255) As String
For i = 0 To 255
Var = Cells(1, i + 1).Address
If Mid(Var, 3, 1) >= "A" And Mid(Var, 3, 1) <= "Z" Then
TabloCol(i) = Mid(Var, 2, 2)
Else
TabloCol(i) = Mid(Var, 2, 1)
End If
Next i
For x = 255 To 0 Step -1
For i = 9 To 1 Step -1
Set c = ActiveSheet.UsedRange.Find(TabloCol(x) & i,
LookIn:=xlFormulas)
If Not c Is Nothing Then
DerCol = x
DerLigne = i
Exit For
End If
Next i
If DerCol <> 0 Then Exit For
Next x
For x = 0 To DerCol
For i = 1 To DerLigne
ActiveSheet.UsedRange.Replace what:=TabloCol(x) & i,
replacement:="$" & _
TabloCol(x) & "$" & i
Next i
Next x
End Sub

Daniel
"Daniel" a écrit dans le message de news:

Bonjour.
Essaie cette macro, mais avant, fais une sauvegarde de ton classeur. Elle
est très longue à l'exécution. Tu as largement le temps de dîner avant
qu'elle ne se termine car elle fait fait une recherche sur toutes les
celluless de A1 à IV65536. Aussi, si tu connais la référence la plus
éloignée de A1, tu peux diminuer le temps d'exécution en modifiant :
For x = 0 To 255
et
For i = 1 To 65536

Sub test()
Dim c As Range, ctemp As String
Dim TabloCol(255) As String
For i = 0 To 255
Var = Cells(1, i + 1).Address
If Mid(Var, 3, 1) >= "A" And Mid(Var, 3, 1) <= "Z" Then
TabloCol(i) = Mid(Var, 2, 2)
Else
TabloCol(i) = Mid(Var, 2, 1)
End If
Next i
For x = 0 To 255
For i = 1 To 65536
ActiveSheet.UsedRange.Replace what:=TabloCol(x) & i,
replacement:="$" & _
TabloCol(x) & "$" & i
Next i
Next x
End Sub

Cordialement.
Daniel
"Padawan" a écrit dans le message de
news:
Bonjour à tous,

J'ai construit un tableau avec plein de formules de calcul. Je
souhaiterai
ajouter automatiquement (car le tableau est immense) des "dollars" dans
toutes les formules. Est-ce possible ? Quelqu'un peut m'aider?
Merci pour toute réponse!!










Avatar
Padawan

Une version plus rapide :

Sub test()
Dim c As Range, DerLigne As Long, DerCol As Integer
Dim TabloCol(255) As String
For i = 0 To 255
Var = Cells(1, i + 1).Address
If Mid(Var, 3, 1) >= "A" And Mid(Var, 3, 1) <= "Z" Then
TabloCol(i) = Mid(Var, 2, 2)
Else
TabloCol(i) = Mid(Var, 2, 1)
End If
Next i
For x = 255 To 0 Step -1
For i = 9 To 1 Step -1
Set c = ActiveSheet.UsedRange.Find(TabloCol(x) & i,
LookIn:=xlFormulas)
If Not c Is Nothing Then
DerCol = x
DerLigne = i
Exit For
End If
Next i
If DerCol <> 0 Then Exit For
Next x
For x = 0 To DerCol
For i = 1 To DerLigne
ActiveSheet.UsedRange.Replace what:=TabloCol(x) & i,
replacement:="$" & _
TabloCol(x) & "$" & i
Next i
Next x
End Sub

Daniel
"Daniel" a écrit dans le message de news:

Bonjour.
Essaie cette macro, mais avant, fais une sauvegarde de ton classeur. Elle
est très longue à l'exécution. Tu as largement le temps de dîner avant
qu'elle ne se termine car elle fait fait une recherche sur toutes les
celluless de A1 à IV65536. Aussi, si tu connais la référence la plus
éloignée de A1, tu peux diminuer le temps d'exécution en modifiant :
For x = 0 To 255
et
For i = 1 To 65536

Sub test()
Dim c As Range, ctemp As String
Dim TabloCol(255) As String
For i = 0 To 255
Var = Cells(1, i + 1).Address
If Mid(Var, 3, 1) >= "A" And Mid(Var, 3, 1) <= "Z" Then
TabloCol(i) = Mid(Var, 2, 2)
Else
TabloCol(i) = Mid(Var, 2, 1)
End If
Next i
For x = 0 To 255
For i = 1 To 65536
ActiveSheet.UsedRange.Replace what:=TabloCol(x) & i,
replacement:="$" & _
TabloCol(x) & "$" & i
Next i
Next x
End Sub

Cordialement.
Daniel




Merci Daniel pour cette macro et cette réponse aussi rapide mais j'ai un
petit souci : lorsque je l'exécute ce message : Erreur de compilation :
erreur de syntaxe apparait sur l'élément : "Set c =
ActiveSheet.UsedRange.Find(TabloCol(x) & i,". Comment résoudre ce problème
SVP?
D'avance merci.

Padawan


Avatar
Daniel
Encore une fois, cette macro fonctionne mal. Utilise la solution fournie par
Ange Ounis.
Daniel
"Padawan" a écrit dans le message de
news:



Une version plus rapide :

Sub test()
Dim c As Range, DerLigne As Long, DerCol As Integer
Dim TabloCol(255) As String
For i = 0 To 255
Var = Cells(1, i + 1).Address
If Mid(Var, 3, 1) >= "A" And Mid(Var, 3, 1) <= "Z" Then
TabloCol(i) = Mid(Var, 2, 2)
Else
TabloCol(i) = Mid(Var, 2, 1)
End If
Next i
For x = 255 To 0 Step -1
For i = 9 To 1 Step -1
Set c = ActiveSheet.UsedRange.Find(TabloCol(x) & i,
LookIn:=xlFormulas)
If Not c Is Nothing Then
DerCol = x
DerLigne = i
Exit For
End If
Next i
If DerCol <> 0 Then Exit For
Next x
For x = 0 To DerCol
For i = 1 To DerLigne
ActiveSheet.UsedRange.Replace what:=TabloCol(x) & i,
replacement:="$" & _
TabloCol(x) & "$" & i
Next i
Next x
End Sub

Daniel
"Daniel" a écrit dans le message de news:

Bonjour.
Essaie cette macro, mais avant, fais une sauvegarde de ton classeur.
Elle
est très longue à l'exécution. Tu as largement le temps de dîner avant
qu'elle ne se termine car elle fait fait une recherche sur toutes les
celluless de A1 à IV65536. Aussi, si tu connais la référence la plus
éloignée de A1, tu peux diminuer le temps d'exécution en modifiant :
For x = 0 To 255
et
For i = 1 To 65536

Sub test()
Dim c As Range, ctemp As String
Dim TabloCol(255) As String
For i = 0 To 255
Var = Cells(1, i + 1).Address
If Mid(Var, 3, 1) >= "A" And Mid(Var, 3, 1) <= "Z" Then
TabloCol(i) = Mid(Var, 2, 2)
Else
TabloCol(i) = Mid(Var, 2, 1)
End If
Next i
For x = 0 To 255
For i = 1 To 65536
ActiveSheet.UsedRange.Replace what:=TabloCol(x) & i,
replacement:="$" & _
TabloCol(x) & "$" & i
Next i
Next x
End Sub

Cordialement.
Daniel




Merci Daniel pour cette macro et cette réponse aussi rapide mais j'ai un
petit souci : lorsque je l'exécute ce message : Erreur de compilation :
erreur de syntaxe apparait sur l'élément : "Set c > ActiveSheet.UsedRange.Find(TabloCol(x) & i,". Comment résoudre ce problème
SVP?
D'avance merci.

Padawan