hilpers


  hilpers > microsoft.* > microsoft.excel

 #1  
18/04/2017, 20h57
Elie Chayo
Bonsoir,
Pour éliminer des caractères spéciaux d'une cellule "1 127,62 â?¬ ", j'ai essayé "rechercher/remplacer" mais leschiffres affichés sont faux souvent multipliés par 1000.
J'ai pensé à utiliser la fonction gauche en copiant la 1ere cellule de la colonne contenant ces signes sur une autre colonne, puis de faire copie incrémentielle de la formule. La manoeuvre manuelle réussitparfaitement. 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:=xlFillDefault

J'ai déclanché une macro pour cette fonction et j'ai les mêmes lignes. Le lancement de la macro bloque sur la dernière ligne et ledé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ême fonction les cellules successivement?
Merci

 #2  
18/04/2017, 21h48
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
 #3  
18/04/2017, 21h53
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
 #4  
18/04/2017, 21h59
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$1...

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
 #5  
18/04/2017, 22h22
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$1...

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
 #6  
18/04/2017, 22h24
MichD
Merci quand même Jacquouille.

Les applications Microsoft sont décevantes!

MichD
 #7  
19/04/2017, 04h52
isabelle
salut vous deux,
Denis, j'ai posté ton message directement sur
[..]
j'avais essayé auparavant sur mozilla mais sans succès
isabelle

Le 2017-04-18 à 16:24, MichD a écrit :
[..]
 #8  
19/04/2017, 11h15
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
> [..]
> j'avais essayé auparavant sur mozilla mais sans succès
> isabelle
> Le 2017-04-18 à 16:24, MichD a écrit :


Bonjour à vous tous et merci de vos réponses,
Salut MichD, je n'ai pas voulu te solliciter de nouveau car je t'avais suffisament accaparé.
J'ai trouvé ce moyen de supprimer les caractères puis de transformer les données en nombres pour les recoller dans la colonne d'origine.. C'est peut-être un peu compliqué mais cela fonctionne manuellement.
Je vais essayer de digérer ce que vous me donnez.
Encore merci
 #9  
19/04/2017, 11h41
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 :
> Bonjour à vous tous et merci de vos réponses,
> Salut MichD, je n'ai pas voulu te solliciter de nouveau car je t'avais suffisament accaparé.
> J'ai trouvé ce moyen de supprimer les caractères puis de transformer les données en nombres pour les recoller dans la colonne d'origine. C'est peut-être un peu compliqué mais cela fonctionne manuellement.
> 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; cela permettait de la coller ensuite à la suite des procédantes pour regrouper tout sur une seule feuille.
Si comme je l'espère cela fonctionne, tout va être simplifié..
 #10  
19/04/2017, 12h20
MichD
Merci Isabelle.

MichD
 #11  
19/04/2017, 12h35
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
 #12  
19/04/2017, 12h39
Elie Chayo
Le mercredi 19 avril 2017 13:35:13 UTC+3, MichD a écrit :
[..]
> .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


Toujours là! Je suis presque gêné!
La dernière macro a bloqué; Regarde

[..]
 #13  
19/04/2017, 12h58
MichD
La formule s'écrit sur une seule ligne, mais comme cette dernière est longue, le service de
messagerie l'a transposée sur 2 lignes. Tu dois la remettre sur une seule ligne dans Excel où
utiliser cette syntaxe.

..Formula = "=LEFT(" & Rg(1).Offset(, -7).Address(0, 0) & _
"," & Len(Rg(1).Offset(, -7).Value) - 4 & ")"

MichD
 #14  
19/04/2017, 20h28
Elie Chayo
Le mercredi 19 avril 2017 13:58:10 UTC+3, MichD a écrit :
> La formule s'écrit sur une seule ligne, mais comme cette dernière est longue, le service de
> messagerie l'a transposée sur 2 lignes. Tu dois la remettre sur une seule ligne dans Excel où
> utiliser cette syntaxe.
> .Formula = "=LEFT(" & Rg(1).Offset(, -7).Address(0, 0) & _
> "," & Len(Rg(1).Offset(, -7).Value) - 4 & ")"
> MichD


Bonsoir MichD,
Maintenant cela fonctionne bien. J'ai supprimé des lignes que j'avais qui empéchaient la fin de la macro.
Je vais maintenant transposer les lettres pour avoir le même résultat pour les colonnes I et K . Tu as résolu le problème de la transcription erronée des chiffres.
Idem pour appliquer aux 2 autres feuilles en changeant le nom de la feuille.. Et enfin copier/coller toutes les données des 2 dernières feuilles sur la fenêtre résultat que j'ai ouvert en premier.
Merci d'avoir accepté de m'aider de nouveau; si je n'y arrive pas, je sais à qui m'adresser.
 #15  
20/04/2017, 18h35
Elie Chayo
Le mercredi 19 avril 2017 21:28:05 UTC+3, Elie Chayo a écrit :
> Le mercredi 19 avril 2017 13:58:10 UTC+3, MichD a écrit :
> Bonsoir MichD,
> Maintenant cela fonctionne bien. J'ai supprimé des lignes que j'avais qui empéchaient la fin de la macro.
> Je vais maintenant transposer les lettres pour avoir le même résultat pour les colonnes I et K . Tu as résolu le problème de la transcription erronée des chiffres.
> Idem pour appliquer aux 2 autres feuilles en changeant le nom de la feuille. Et enfin copier/coller toutes les données des 2 dernières feuilles sur la fenêtre résultat que j'ai ouvert en premier.
> Merci d'avoir accepté de m'aider de nouveau; si je n'y arrive pas, je sais à qui m'adresser.


Bonsoir MichD,
Franchement j'aurais cru me débrouiller seul en copiant le bout de code en changeant les lettres de la colonne. Comme je n'ai pas pu comprendre ce code, ce n'est surement pas la bonne méthode.
D'bord on me répond que Range est déjà désigné; j'y ai mis une apostrophe, et la cela va jusqu'au bout mais les colonnes après H disparaissent.
Je t'envoie la macro comme elle est en ce moment. Peux-tu y jeter un oeil?Merci

[..]


Discussions similaires
Cellule vide et cellule contenant un 0

copie incrémentielle d'un fichier mdb

fonction recherhce cellule contenant un texte

Copie conditionnelle en fonction de la couleur d'un cellule


Fuseau horaire GMT +2. Il est actuellement 05h51. | Privacy Policy