Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/01/2012, 08h31   #1
Invité de passage
 
Inscription : février 2008
Messages : 14
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 14
Points : 1
Points : 1
Par défaut Aide tri de données

Bonjour, pour mon boulot je me suis fait une petite macro qui me permet de trier certaines données , de mettre en forme etc

La base qui contient les données est un fichier Txt.

J'arrive à l'importer, trier quelques lignes mais j'ai un soucis.

dans la colonne B j'ai des cellules qui ont des valeurs du genre "e cadre 100"

Je voudrais supprimer juste "e cadre" et laisser "100"
J'y arrive pour une cellule mais je n'arrive pas a faire une boucle pour que toutes les cellules de la colonne B contenant cette valeur.

Avez vous une idée pour m'aiguiller car la je galère pas mal...??
Merci
master1551 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 09h01   #2
Membre Expert
 
Avatar de MarcelG
 
Homme Marcel GALANO
Développeur informatique
Inscription : juillet 2009
Messages : 644
Détails du profil
Informations personnelles :
Nom : Homme Marcel GALANO
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : juillet 2009
Messages : 644
Points : 1 255
Points : 1 255
Par défaut remplacement

Bonjour à toi, Bonjour au Forum,

Bienvenu!

Tu n'as pas à boucler sur tes cellules (personnellement, j'évite tant que possible) pour effectuer ton remplacement.

Pour ce faire, tu peux appliquer directement la méthode Replace à ton champ de cellules.

Exemple à adapter :

Code :
Range("A1:A50").Replace What:="e cadre", Replacement:="", LookAt:=xlPart
Bonne journée.
__________________

Bien Cordialement.

Marcel

Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


MarcelG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 09h02   #3
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Si tu dis que tu y arrives pour une cellule, dis-nous comment tu fais qu'on puisse t'aider à l'adapter pour toutes les cellules.
Et il faudrait aussi plus de détail sur ce que peuvent contenir les cellules : c'est toujours le même texte avec le nombre qui change ? Du texte avec un nombre à la fin ? ... Le traitement sera très différent selon les cas. Il faut toujours se demander : "Si je devais le faire manuellement, je ferais comment", ensuite le VBA ne sert qu'à automatiser tout ça.
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 09h17   #4
Invité de passage
 
Inscription : février 2008
Messages : 14
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 14
Points : 1
Points : 1
Alors merci pour vos réponses....
J'ai testé la méthode de MarcelG, ca marche impec....

Merci
master1551 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 09h59   #5
Invité de passage
 
Inscription : février 2008
Messages : 14
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 14
Points : 1
Points : 1
Je vous embete une fois de plus mais j'ai besoin d'un autre renseignement...


Toujours avec mon fichier, mais concernant la mise en forme

comment selectionner une plage cellule dans la colonne A, qui va de la cellule contenant un texte jusqu'a la prochaine ligne vide ??

Je joins un fichier exemple.

Exemple je voudrais selectionner la plage de cellule qui part de "horaires de dégivrages :" jusqu'à "Temps de sécurité (durée maximale du dégivrage)" inclus, puis les mettres en formes
Fichiers attachés
Type de fichier : xlsx tri des infos.xlsx (20,9 Ko, 5 affichages)
master1551 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 10h29   #6
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
En général, on utilisant la méthode End de l'objet Range (je t'invite à lire la documentation à ce sujet). Par exemple :
Code :
1
2
Dim rg As Range
Set rg = Range(Range("A1"), Range("A1").End(XlDown))
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 10h51   #7
Invité de passage
 
Inscription : février 2008
Messages : 14
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 14
Points : 1
Points : 1
oui mais je veux pas la derniere ligne vide du tableau

Je veux la prochaine ligne apres la valeur "Horaires de dégivrage :"
master1551 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 11h02   #8
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
C'est ce que fais ce que je te propose. Ou alors j'ai mal compris.
Je n'avais pas ouvert ton fichier, donc j'ai mis A1, mais il faut adapter en fonction de la cellule dont tu pars. Et tu peux utiliser Offset si tu veux prendre plusieurs colonnes.
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 11h09   #9
Invité de passage
 
Inscription : février 2008
Messages : 14
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 14
Points : 1
Points : 1
ok mais comment faire pourque ca s'applique uniquement aux cellules avec mon critères ??
master1551 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 11h25   #10
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Quel critère ? Essaie de reformuler clairement ce que tu veux faire exactement.
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 11h28   #11
Invité de passage
 
Inscription : février 2008
Messages : 14
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 14
Points : 1
Points : 1
alors je veux que la macro choisissent les cellules contenant "horaires de deg" jusqu'à la prochaine cellule vide et me fasse la mise en forme.....



sachant que j'ai plusieurs fois "horaires de deg"


Mon fichier que j'ai uploadé peut t'aider a comprendre ce que je veux
master1551 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 11h36   #12
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Sauf qu'il y a une cellule vide sous tes cellules "horaires de deg". Tu veux peut-être aller jusqu'à la prochaine cellule non-vide ?
Dans ce cas, mon code est censé fonctionné, en fait c'est l'équivalent de faire un Ctrl+Flèche quand tu es sur une cellule dans Excel.

Ensuite si ton problème est de trouver les cellules "horaires de deg", tu peux utiliser Find.
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 11h38   #13
Invité de passage
 
Inscription : février 2008
Messages : 14
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 14
Points : 1
Points : 1
c'est la fonction find que je galère avec
master1551 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 11h47   #14
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Ce code te mets tes zones en bleu. A toi d'adapter la mise en forme.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Option Explicit
 
Public Sub MettreEnFormeDegivrage()
    Dim ws As Worksheet
    Dim rgFirst As Range
    Dim rgAll As Range
 
    Set ws = Worksheets("Feuil1")
    Set rgFirst = ws.Range("A:A").Find("Horaires de dégivrage :")
 
    Do While Not (rgFirst Is Nothing)
        Set rgAll = ws.Range(rgFirst, rgFirst.End(xlDown).Offset(0, 2))
 
        rgAll.Interior.Color = vbBlue 'A modifier
 
        Set rgFirst = ws.Range(rgAll.Cells(rgAll.Rows.Count, 1), ws.Range("A65000")).FindNext
    Loop
End Sub
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 12h01   #15
Membre Expert
 
Avatar de MarcelG
 
Homme Marcel GALANO
Développeur informatique
Inscription : juillet 2009
Messages : 644
Détails du profil
Informations personnelles :
Nom : Homme Marcel GALANO
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : juillet 2009
Messages : 644
Points : 1 255
Points : 1 255
Par défaut recherche

Salut,

zebreloup,
Ton code est intéressant.
2 remarques cependant:
- Il vaut mieux définir ton champ d'action en partant de la dernière cellule de ta feuille
- Il est de bon ton de "vider" les variables affectées aux objets en fin de procédure.

Pour ma part, j'avais (à adapter) :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Public Sub ESSAI()
 
Dim c As Range
Dim champ As Range
 
With Worksheets(1)
    Set champ = .Range("A1", .Cells(.Rows.Count, 1).End(xlUp))
End With
 
With champ
    Set c = .Find("Horaires de dégivrage :", LookIn:=xlValues)
    If Not c Is Nothing Then
        firstAddress = c.Address
        Do
            Range(c, c.End(xlDown).Offset(0, 2)).Interior.ColorIndex = 5
            Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
End With
 
Set champ = Nothing
Set c = Nothing
 
End Sub
__________________

Bien Cordialement.

Marcel

Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


MarcelG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 12h17   #16
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Pour ta première remarque, j'avais déjà testé sur de très grandes quantités de données et une grand nombre de Find successifs, nos amis de Microsoft ont été assez intelligent pour ignorer de base les plages vides dans Find, donc ça ne change quasiment rien.

Pour ta seconde remarque, je suis d'accord que c'est une bonne habitude à prendre pour des programmes plus complexes. Après, j'avoue que pour quelque chose d'aussi simple où l'on sait très bien que le Garbage Collector va nous faire ça tout seul comme un grand à la fin de la procédure, j'évite d'alourdir le code. Ça va être plus important dès qu'on aura des objets ActiveX plus complexes ou des formulaires qui restent en mémoire...
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 12h34   #17
Membre Expert
 
Avatar de MarcelG
 
Homme Marcel GALANO
Développeur informatique
Inscription : juillet 2009
Messages : 644
Détails du profil
Informations personnelles :
Nom : Homme Marcel GALANO
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : juillet 2009
Messages : 644
Points : 1 255
Points : 1 255
zebreloup,

Je ne conteste pas le fait que l'absence de ces usages n'affecte pas l'efficacité du code.
Ce sont de "bonnes" habitudes à prendre, selon moi.
Il ne faut pas oublier que des lecteurs du forum peuvent s'inspirer de ce qui est écrit, et l'intégrer dans d'autres programmes.
C'est une question de choix.
__________________

Bien Cordialement.

Marcel

Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


MarcelG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 12h57   #18
Invité de passage
 
Inscription : février 2008
Messages : 14
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 14
Points : 1
Points : 1
Un grand merci pour ce bout de code , ca me va impec
master1551 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h25.


 
 
 
 
Partenaires

Hébergement Web