copie incrémentielle d'une cellule contenant une fonction

Le
Elie Chayo
Bonsoir,
Pour éliminer des caractères spéciaux d'une cellule "1 127,6=
2 € ", j'ai essayé "rechercher/remplacer" mais les=
chiffres affichés sont faux souvent multipliés par 1000.
J'ai pensé à utiliser la fonction gauche en copiant la 1ere cellu=
le de la colonne contenant ces signes sur une autre colonne, puis de faire =
copie incrémentielle de la formule. La manoeuvre manuelle réussit=
parfaitement. mais traduit dans une macro:

"'copier la cellule H6 sans les signes puis copie incrémentielle
Range("O6").Select
ActiveCell.FormulaR1C1 = "=LEFT(RC[-7],LEN(RC[-7])-4)"
Range("O6").Select
Selection.AutoFill Destination:=Range("O6:60"), Type:=xlFillDefa=
ult

J'ai déclanché une macro pour cette fonction et j'ai les mêm=
es lignes. Le lancement de la macro bloque sur la dernière ligne et le=
débogage indique:
"la méthode "Range" de l'objet'_Global' a échoué"
Pouvez-vous me dire ce qui ne marche pas.
Eventuellement que pensez-vous d'une boucle pour copier avec cette mêm=
e fonction les cellules successivement?
Merci
Vos réponses Page 1 / 3
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichD
Le #26432179
Bonjour,
Essaie comme ceci :
'----------------------------------------
Sub test()
With ActiveSheet
With .Range("O6")
.Formula = "=LEFT(H6,LEN(H6)-4)"
End With
.Range("o6").AutoFill Destination:=.Range("o6:o60"), Type:=xlFillDefault
End With
End Sub
'----------------------------------------
MichD
MichD
Le #26432181
Et si tu veux faire disparaître les formules à la suite de l'extraction
'----------------------------------------
Sub test()
With ActiveSheet
With .Range("O6")
.Formula = "=LEFT(H6,LEN(H6)-4)"
End With
.Range("o6").AutoFill Destination:=.Range("o6:o60"), Type:=xlFillDefault
.Range("o6:o60").value = .Range("o6:o60").value '<<<=== Ligne ajoutée
End With
End Sub
'------------------------------------------
MichD
Jacquouille
Le #26432180
Salut Denis
j'ai bien essayé de copier ton msg pour l'envoyer sur le fil "commentaires".
mais, il n'a pas voulu sortir de mon PC et encore moins arriver à
destination.
désolé, je ne puis donc t'aider. ( ah, ces caractères unicodes...)
Bonne soirée
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"MichD" a écrit dans le message de groupe de discussion :
od5qrk$11bs$
Et si tu veux faire disparaître les formules à la suite de l'extraction
'----------------------------------------
Sub test()
With ActiveSheet
With .Range("O6")
.Formula = "=LEFT(H6,LEN(H6)-4)"
End With
.Range("o6").AutoFill Destination:=.Range("o6:o60"), Type:=xlFillDefault
.Range("o6:o60").value = .Range("o6:o60").value '<<<=== Ligne ajoutée
End With
End Sub
'------------------------------------------
MichD
MichD
Le #26432184
Il y a aussi cette manière de procéder :
'----------------------------------------------------------
Sub test1()
Dim Rg As Range, DerLig As Long
'Rg est une variable "OBJECT" de type RANGE.
With ActiveSheet
'Détermine la dernière ligne occupée de la colonne H
'la colonne H contient les données
DerLig = .Range("h" & .Rows.Count).End(xlUp).Row
'Détermine la plage à traiter
Set Rg = .Range("o6:o" & DerLig)
End With
'D'un seul coup copie la formule sur toute la plage
With Rg
.Formula = "=LEFT(" & Rg(1).Offset(, -7).Address(0, 0) & "," &
Len(Rg(1).Offset(, -7).Value) - 4 & ")"
'Remplace les formules par la valeur seulement
.Value = .Value
End With
End Sub
'----------------------------------------------------------
MichD

"MichD" a écrit dans le message de groupe de discussion : od5qrk$11bs$
Et si tu veux faire disparaître les formules à la suite de l'extraction
'----------------------------------------
Sub test()
With ActiveSheet
With .Range("O6")
.Formula = "=LEFT(H6,LEN(H6)-4)"
End With
.Range("o6").AutoFill Destination:=.Range("o6:o60"), Type:=xlFillDefault
.Range("o6:o60").value = .Range("o6:o60").value '<<<=== Ligne ajoutée
End With
End Sub
'------------------------------------------
MichD
MichD
Le #26432183
Merci quand même Jacquouille.
Les applications Microsoft sont décevantes!
MichD
isabelle
Le #26432199
salut vous deux,
Denis, j'ai posté ton message directement sur
https://groups.google.com/forum/#!forum/microsoft.public.fr.excel
j'avais essayé auparavant sur mozilla mais sans succès
isabelle
Le 2017-04-18 à 16:24, MichD a écrit :
Merci quand même Jacquouille.
Les applications Microsoft sont décevantes!
MichD
Elie Chayo
Le #26432209
Le mercredi 19 avril 2017 05:52:21 UTC+3, isabelle a écrit :
salut vous deux,
Denis, j'ai posté ton message directement sur
https://groups.google.com/forum/#!forum/microsoft.public.fr.excel
j'avais essayé auparavant sur mozilla mais sans succès
isabelle
Le 2017-04-18 à 16:24, MichD a écrit :
Merci quand même Jacquouille.
Les applications Microsoft sont décevantes!
MichD


Bonjour à vous tous et merci de vos réponses,
Salut MichD, je n'ai pas voulu te solliciter de nouveau car je t'avais suff isament accaparé.
J'ai trouvé ce moyen de supprimer les caractères puis de transfor mer les données en nombres pour les recoller dans la colonne d'origine . C'est peut-être un peu compliqué mais cela fonctionne manuellem ent.
Je vais essayer de digérer ce que vous me donnez.
Encore merci
Elie Chayo
Le #26432212
Le mercredi 19 avril 2017 12:15:37 UTC+3, Elie Chayo a écrit :
Le mercredi 19 avril 2017 05:52:21 UTC+3, isabelle a écrit :
salut vous deux,
Denis, j'ai posté ton message directement sur
https://groups.google.com/forum/#!forum/microsoft.public.fr.excel
j'avais essayé auparavant sur mozilla mais sans succès
isabelle
Le 2017-04-18 à 16:24, MichD a écrit :
> Merci quand même Jacquouille.
>
> Les applications Microsoft sont décevantes!
>
> MichD
>
>

Bonjour à vous tous et merci de vos réponses,
Salut MichD, je n'ai pas voulu te solliciter de nouveau car je t'avais su ffisament accaparé.
J'ai trouvé ce moyen de supprimer les caractères puis de transf ormer les données en nombres pour les recoller dans la colonne d'origi ne. C'est peut-être un peu compliqué mais cela fonctionne manuell ement.
Je vais essayer de digérer ce que vous me donnez.
Encore merci

Re MichD,
De toutes les 3 formules que tu m'as données, en réalité la 3eme regroupe le tout. C'est celle que je vais appliquer.
En regardant la 1ere macro très ancienne, il y avait la même proc édure pour déterminer la dernière ligne et copier le tout; c ela permettait de la coller ensuite à la suite des procédantes po ur regrouper tout sur une seule feuille.
Si comme je l'espère cela fonctionne, tout va être simplifié .
MichD
Le #26432213
Merci Isabelle.
MichD
MichD
Le #26432215
Si à la fin de la procédure, tu désires copier le résultat de la colonne O vers la colonne H,
il manque une ligne de code...
Regarde la dernière ligne de la procédure!
'--------------------------------------------------------------
Sub test1()
Dim Rg As Range, DerLig As Long
'Rg est une variable "OBJECT" de type RANGE.
With ActiveSheet
'Détermine la dernière ligne occupée de la colonne H
'la colonne H contient les données
DerLig = .Range("h" & .Rows.Count).End(xlUp).Row
'Détermine la plage à traiter
Set Rg = .Range("o6:o" & DerLig)
End With
'D'un seul coup copie la formule sur toute la plage
With Rg
.Formula = "=LEFT(" & Rg(1).Offset(, -7).Address(0, 0) & _
"," & Len(Rg(1).Offset(, -7).Value) - 4 & ")"
'Remplace les formules par la valeur seulement
.Value = .Value
.Cut Rg.Offset(, -7) '<<<<======= Ligne ajoutée
End With
End Sub
'--------------------------------------------------------------
MichD
Publicité
Poster une réponse
Anonyme