Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1226 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Réaliser une répétition de ma macro

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Réaliser une répétition de ma macro

n°1981690
GohanSSj2
Posté le 07-04-2010 à 17:01:52  profilanswer
 

Bonjour,
 
Je préfére réalisé un autre Sujet pour éviter de polluer mon autre Post et pour facilié la recherche de réponses à ma question.
Monsieurs les Modérateurs, je ne sais pas si cela va dans le sens de votre travail. Si ce n'est pas le cas je posterais mes questions sur un même post.
 
Alors voila, j'ai créer une macro sous excel qui me permet de supprimer les valeurs aprés le caractére "/" et le caractére lui même.
Comme je débute je suis passé par plusieurs étapes:
1 - localiser la cellule comportant un "/"
2 - supprimer les valeurs apres le "/" et le "/" en lui même
3 - regrouper ces deux macro par une condition IF
 
j'obtiens :
 
If Cells.Find(What:="/", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
        xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
        False).Activate Then ActiveCell = Left(ActiveCell, InStr(ActiveCell, "/" ) - 1)
 
Cette macro ne fonctionne que pour une seule cellule, alors qu'il y en a beaucoup plus à modifier.
 
Je voudrais donc que la modification se réalise jusqu'à ce qu'il n'y ait plus de cellule comportant un "/"
 
C'est la que je n'arrive pas à trouver des infos sur la commande à adopter (goto, For next = j'ai vu que cela était utilisé mais j'en sais pas plus dessus)
 
Cordialement,

mood
Publicité
Posté le 07-04-2010 à 17:01:52  profilanswer
 

n°1981707
galopin01
Posté le 07-04-2010 à 18:52:13  profilanswer
 

bonjour,
Pourquoi ne pas utiliser l'aide d'Excel sur Find ?
Tu aurais trouvé ceci :
 

Code :
  1. Sub test()
  2. With ActiveSheet.Cells
  3.     Set c = .Find("/", LookIn:=xlValues)
  4.     If Not c Is Nothing Then
  5.     S = c.Value
  6.         firstAddress = c.Address
  7.         Do
  8.             c.Value = Left(S, InStr(S, "/" ) - 1)
  9.             Set c = .FindNext(c)
  10.         Loop While Not c Is Nothing And c.Address <> firstAddress
  11.     End If
  12. End With
  13. End Sub


 
A+

n°1981729
GohanSSj2
Posté le 07-04-2010 à 21:09:45  profilanswer
 

Et bien à mon grand regret je ne dispose que de Office 2000 au boulot et l'aide sur les macro n'a pas été installé.  
 
Je vais essayé de remédié à ça.
 
Je te remercie pour ton code je le testerais demain à la première heure ! ^^
Par contre faut que je décortique ça car c'est du chinois là, et je n'aime pas faire des choses que je ne maitrise pas, surtout pour le travail.
 
Je vous tiens au courant

n°1981813
GohanSSj2
Posté le 08-04-2010 à 09:18:21  profilanswer
 

Lorsque je fait fonctionner ta macro j'obtiens une erreur sur la ligne 10 :
 

Code :
  1. Sub test()
  2. With ActiveSheet.Cells
  3.     Set c = .Find("/", LookIn:=xlValues)
  4.     If Not c Is Nothing Then
  5.     S = c.Value
  6.         firstAddress = c.Address
  7.         Do
  8.             c.Value = Left(S, InStr(S, "/" ) - 1)
  9.             Set c = .FindNext(c)
  10.         Loop While Not c Is Nothing And c.Address <> firstAddress
  11.     End If
  12. End With
  13. End Sub

n°1981815
GohanSSj2
Posté le 08-04-2010 à 09:19:30  profilanswer
 

Cependant la fonction a bien marchée puisqu'elle a bien supprimer le "/" et ce qu'il y a aprés. et ce pour l'ensemble des cellules. Donc je pense que l'erreur viens du "bouclage" de la commande. la fin de la répétition lorsqu'il n'y a plus de case à modifier semble poser probléme. Aprés savoir comment cela se traduit en VBA est une autre histoire ^^


Message édité par GohanSSj2 le 08-04-2010 à 09:21:53
n°1981866
GohanSSj2
Posté le 08-04-2010 à 10:50:32  profilanswer
 

Bon voila ou j'en suis:
Lorsque j'écrit ce code à partir de l'aide Excel (oui j'ai reussi à me débrouiller :) ):

Code :
  1. Sub test2()
  2. With ActiveSheet.Cells()
  3.     Set c = .Find("/", LookIn:=xlValues)
  4.     If Not c Is Nothing Then
  5.         firstAddress = c.Address
  6.         Do
  7.             c.Interior.Pattern = xlPatternGray50
  8.             Set c = .FindNext(c)
  9.         Loop While Not c Is Nothing And c.Address <> firstAddress
  10.     End If
  11. End With
  12. End Sub


Tout marche correctement, l'ensemble de mes cases comportant un "/" se retrouve grisées.
Mais dés que je tente d'insérer la modification de la valeur de la cellule par  

Code :
  1. ActiveCell = Left(ActiveCell, InStr(ActiveCell, "/" ) - 1)


ou le code de galopin01 (avec S = c.value):

Code :
  1. c.Value = Left(S, InStr(S, "/" ) - 1)


Et bien ça ne marche pas, cela renvoie une erreur sur la ligne:

Code :
  1. Loop While Not c Is Nothing And c.Address <> firstAddress


 
une idée ?

n°1981880
GohanSSj2
Posté le 08-04-2010 à 11:02:32  profilanswer
 

L'erreur en question est:
 
Erreur d'exécution '91':
Variable objet ou variable de bloc With non définie

n°1981975
galopin01
Posté le 08-04-2010 à 14:02:05  profilanswer
 

bonjour,
Désolé, ça devait pas tourner bien rond hier  :pt1cable:  
Je te donne la macro corrigée car en plus celle d'hier était boguée !
ça fonctionne mais je n'ai pas trouvé pourquoi le message d'erreur ?
Je m'en tire avec une pirouette (On error resume next)
Mébon, si quelqu'un est capable de dire pourquoi le message d'erreur ça serait mieux !
 
Sub test()
On Error Resume Next
With ActiveSheet.Cells
    Set c = .Find("/", LookIn:=xlValues)
    If Not c Is Nothing Then
        firstAddress = c.Address
        Do
        S = c.Value
        S = Left(S, InStr(S, "/" ) - 1)
        c.Value = S
        Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
End With
End Sub
 
A+

n°1982431
GohanSSj2
Posté le 09-04-2010 à 11:37:17  profilanswer
 

Merci en fait j'ai reussi à trouver une solution de rechange, comme tout mes codes avaient 10 caractéres avant le "/" j'ai demandé d'afficher uniquement les 10 permiers mais je garde ton code sous la main au cas ou une circontance ferais que cette méthode ne soit plus valable.
 
Un p'tit coup d'oeil ici pour voir les codes:
http://forum.hardware.fr/hfr/Progr [...] 8440_1.htm
 
Cordialement,


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Réaliser une répétition de ma macro

 

Sujets relatifs
Macro pour formater un fichier texte ou excel [Résolu]macro permettant de créer un nombre de feuille suivant une cellule
macro suprimeMacro Copier une partie d'une cellule
Excel: Macro pour créer un TCD sur une autre feuille?[VBA - Macro Excel] Masquer colonne sous condition
[VBA] macro excel pour envoyer plusieurs fichiersCréer une Macro par une Macro...
Basique:Sélection Worksheet Excel depuis une macro ?Afficher le nom du fichier ouvert dans une macro sous Excel
Plus de sujets relatifs à : Réaliser une répétition de ma macro


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR