Automatisation de taches

E

elo

Guest
Bonjour,

J'ai besoin d'aide...
J'ai un tableau qui comporte au niveau des lignes 180 communes qui comportent elle-même des points de surveillance. Mon tableau comporte alors environ 1200 lignes.
Pour chaque point de surveillance sont définis des types d'analyse, chaque point n'a pas le même type d'analyse.

Je vous ai joint dans ce message un extrait de mon tableau pour être un peu plus clair...

Lors de l'édition sur une commune, je voudrais supprimer les colonnes "analyse" qui ne sont pas concernées.
A l'heure actuelle, je fais les manipulation suivantes manuellement :

Je selectionne ma commune avec le filtre
Je visualise les colonnes où il n'y a pas de valeur,
Puis, je les masque
Finalement j'édite les résultats pour la commune sélectionnée
Ensuite, je ré-affiche toutes mes colonnes
Je sélectionne une nouvelle commune ...et je reprends ma procédure...

En clair, je voudrai automatiser ces taches.

Je pense qu'il y a une solution au niveau des macros, mais je débute dans ce domaine et j'aurai donc besoin de vos idées ... et solutions...

Merci

Elo
 

Pièces jointes

  • programme_essai.zip
    4.9 KB · Affichages: 27
A

Arnaud

Guest
déja pour commencer un conseil qui peut être pratique : quand dans excel tu click sur outil->macro->nouvelle macro. ensuite tu valide apré avoir mi un nom de macro.
A la suite de cela, tout ce que tu fais sous excel, excel en créer une macro qui tu pe aller voir dans microsoft visual basic éditor donc si tu refais ta manip complète, tu aura un aperçu du code qu'il faut.
 
M

Moa

Guest
Salut Elo !

Une question. Qu'entends tu par "J'édite les résultats..."

Sinon la manière de procéder est la suivante :

Avec le menu Outils / Macro, tu crées une nouvelle macro.

Une fois l'enregistreur en route, tu fais tes manips normalement.

Tu stoppes ta macro et tu l'ouvres dans le Vbe.

(Alt+F11) / Répertoire module.

Je viens de faire cette manip en considérant que le "J'édite les résultats..." soit un simple Copier / Coller / Valeur sur la feuille 2

Et voilà ce que cela à donné :

Sub Macro1()
Selection.AutoFilter Field:=1, Criteria1:="AEP BELMONT DE LA LOIRE"
ActiveWindow.SmallScroll ToRight:=8
ActiveWindow.ScrollColumn = 1
ActiveWindow.SmallScroll ToRight:=12
ActiveWindow.ScrollColumn = 1
Rows("17:18").Select
Selection.EntireRow.Hidden = True
Range("A2:C16").Select
Selection.Copy
Sheets("Feuil2").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Sheets("Feuil1").Select
Range("A35").Select
End Sub

Déjà, d'entrée tu peux éliminer les "ActiveWindow.Scroll....", cela correspond juste au déplacement effectués pendant la macro.

Voilà ta macro est faite à 50 %.

Maintenant, tu vas chercher à faire une boucle du style "For each cell...", afin de sélectionner les lignes que tu voudras masquer, car Excel, ne peut pas le deviner seul.

Si par exemple tu ne veux garder que les lignes ou les cellules de la colonne C, ne sont pas vides

Tu devras faire une boucle de test style :

For each cell in Range("C2:C100") if ActiveCell="" then ActiveCell.EntireRow.Hidden
End If
Next cell

Puis dans cet exemple, on voit que l'on recopie ce qui reste en feuille 2

Mais il ne faut pas écraser ce qui existe déjà, donc on va devoir faire une autre boucle de Test.

Donc, quand tu as beaucoup de manips à faire, tu lances l'enregistreur, tu fais ta macro, puis tu viens sur ce forum et tu demandes à être aidé, pour finir le code Vba et en l'occurence, faire les boucles de test.


Tout simplement !

@ +

Moa
 
E

elo

Guest
Salut Moa,

J'ai fait comme tu m'as conseillé, seulement, ce que je veux c'est masquer mes colonnes et pas mes lignes... et je ne voudrais pas avoir à copier mon résultat dans une autre feuille.
Au fait, quand je dis : " j'édite mes résultats", ca revient à : j'imprime ma feuille de résultats et je passe à ma commune suivante.

Pour le moment, j'en suis là, j'ai pas vraiment avancée, car en fait, je me dis que mes 1eres lignes de code ne correspondent pas à ce que je veux, je crois.
Il me semble que je ne dois pas lui dire de selectionner telle ou telle colonne, normalement, il faut qu'il les trouve en fonction d'instrcutions et de boucles que je dois rédiger, c'est ça??? je suis un peu perdue, comme tu peux le remarquer...

Sub macro1()
'

'
' Selection.AutoFilter Field:=1, Criteria1:="AEP BELMONT DE LA LOIRE"
Columns("D:E").Select
Selection.EntireColumn.Hidden = True
Columns("G:H").Select
Selection.EntireColumn.Hidden = True
Columns("I:I").Select
Selection.EntireColumn.Hidden = True
Columns("K:K").Select
Selection.EntireColumn.Hidden = True
Columns("N:O").Select
Selection.EntireColumn.Hidden = True
Columns("R:R").Select
Selection.EntireColumn.Hidden = True
Columns("T:T").Select
Selection.EntireColumn.Hidden = True
'


For Each cell In Columns("C:T")
If ActiveCell = "" Then
ActiveCell.EntireColumn.Hidden = True
End If
Next cell

'pour re-afficher toutes mes colonnes du tableau

Columns("A:S").Select
Selection.EntireColumn.Hidden = False


End Sub

Je vais continuer à chercher mes solutions mais si tu pouvais m'eclairer ca serait vraiment pas mal!

Merci
Elo
 

Discussions similaires

Réponses
5
Affichages
400

Statistiques des forums

Discussions
312 612
Messages
2 090 227
Membres
104 453
dernier inscrit
benjiii88