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

copie incrémentielle d'une cellule contenant une fonction

24 réponses
Avatar
Elie Chayo
Bonsoir,
Pour =C3=A9liminer des caract=C3=A8res sp=C3=A9ciaux d'une cellule "1 127,6=
2 =C3=A2=E2=80=9A=C2=AC ", j'ai essay=C3=A9 "rechercher/remplacer" mais les=
chiffres affich=C3=A9s sont faux souvent multipli=C3=A9s par 1000.
J'ai pens=C3=A9 =C3=A0 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=C3=A9mentielle de la formule. La manoeuvre manuelle r=C3=A9ussit=
parfaitement. mais traduit dans une macro:

"'copier la cellule H6 sans les signes puis copie incr=C3=A9mentielle
Range("O6").Select
ActiveCell.FormulaR1C1 =3D "=3DLEFT(RC[-7],LEN(RC[-7])-4)"
Range("O6").Select
Selection.AutoFill Destination:=3DRange("O6:60"), Type:=3DxlFillDefa=
ult

J'ai d=C3=A9clanch=C3=A9 une macro pour cette fonction et j'ai les m=C3=AAm=
es lignes. Le lancement de la macro bloque sur la derni=C3=A8re ligne et le=
d=C3=A9bogage indique:
"la m=C3=A9thode "Range" de l'objet'_Global' a =C3=A9chou=C3=A9"
Pouvez-vous me dire ce qui ne marche pas.
Eventuellement que pensez-vous d'une boucle pour copier avec cette m=C3=AAm=
e fonction les cellules successivement?
Merci

10 réponses

1 2 3
Avatar
MichD
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
Avatar
MichD
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
Avatar
Jacquouille
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
Avatar
MichD
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
Avatar
MichD
Merci quand même Jacquouille.
Les applications Microsoft sont décevantes!
MichD
Avatar
isabelle
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
Avatar
Elie Chayo
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
Avatar
Elie Chayo
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é .
Avatar
MichD
Merci Isabelle.
MichD
Avatar
MichD
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
1 2 3