Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Automatise tâches dans Excel 2007

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

mikael2235

XLDnaute Occasionnel
Bonjour à tous,

Je souhaite automatiser une tache dans un tableur Excel. Et autant dire qu'il va falloir passer par du V.B.A. et c'est maintenant que j'ai besoin de votre aide.

Je vous explique mon cas :

- Le tableau est organisé en groupes, je souhaite tout d'abord que la macro supprime tous les sous-groupes (niveau 2). C'est à dire, dans mon exemple les lignes 7,9,11,12 & 17,19,20,21,23,24).

On pourrait le traduire par, supprimer la ligne entière lorsque la cellule A est vide, et quand B est non vide.

Maintenant, j'ai beaucoup de mal a le traduire en VBA.

Merci pour votre aide.

Mikael
 

Pièces jointes

Re : Automatise tâches dans Excel 2007


Merci Youky(BJ), effectivement c'est plus rapide, j'ai diminué à 20 colonnes au lieu des 256...
 
Re : Automatise tâches dans Excel 2007

Je viens de découvrir un problème lors de l'execution de ma macro :

La macro me construit deux TCD, dans 2 onglets differents. J'ai donc fait la macro en enregistrant et en récupérant le code, et j'ai respectivement définit les données sources dans les plages :
-ENTREES!$A$1:$H$4
-SORTIES!$A$1:$H$4

Le problème est que la longueur de mon tableau est variable. Donc mes données sources sont suceptible de changer à chaque fois (uniquement le 4 que j'ai mis en gras).

Il faudrait définir une variable, qui correspondent au numéro de la dernière ligne du tableau et la mettre à la place de mon $4.

C'est donc la que j'ai besoin de votre aide...
Voici le code ma macro, qui ne prends en compte que les 4 premières lignes pour créer le TCD :

Code:
Sheets("ENTREES").Select
Sheets.Add.Move After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "TCD_ENTREES"
    Sheets("ENTREES").Select
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "ENTREES!R1C1:[B][COLOR="Red"]R4[/COLOR][/B]C8", Version:=xlPivotTableVersion10).CreatePivotTable _
        TableDestination:="TCD_ENTREES!R7C1", TableName:="TCD des ENTREES", _
        DefaultVersion:=xlPivotTableVersion10
    Sheets("TCD_ENTREES").Select
    Cells(3, 1).Select
    ActiveWorkbook.ShowPivotTableFieldList = True
    With ActiveSheet.PivotTables("TCD des ENTREES").PivotFields( _
        "Dépôt expéditeur")
        .Orientation = xlRowField
        .Position = 1
    End With
    ActiveSheet.PivotTables("TCD des ENTREES").AddDataField ActiveSheet. _
        PivotTables("TCD des ENTREES").PivotFields("Valo Mvt"), _
        "Somme de Valo Mvt", xlSum
    ActiveWorkbook.ShowPivotTableFieldList = False
    Range("A1").Select

Merci beaucoup pour votre aide.
 
Re : Automatise tâches dans Excel 2007

Pas testé donc .....
Code:
Sheets("ENTREES").Select
Sheets.Add.Move After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "TCD_ENTREES"
    Sheets("ENTREES").Select
  [COLOR="Red"][B]  bas = [A:H].Find("*", , , , 1, 2).Row[/B][/COLOR]  'derniere ligne des col A àH
  ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
    [COLOR="red"][B]Sheets("ENTREES").Range("A1:H" & bas), [/B][/COLOR]Version:=xlPivotTableVersion10).CreatePivotTable _
        TableDestination:="TCD_ENTREES!R7C1", TableName:="TCD des ENTREES", _
        DefaultVersion:=xlPivotTableVersion10
    Sheets("TCD_ENTREES").Select
    Cells(3, 1).Select
    ActiveWorkbook.ShowPivotTableFieldList = True
    With ActiveSheet.PivotTables("TCD des ENTREES").PivotFields( _
        "Dépôt expéditeur")
        .Orientation = xlRowField
        .Position = 1
    End With
    ActiveSheet.PivotTables("TCD des ENTREES").AddDataField ActiveSheet. _
        PivotTables("TCD des ENTREES").PivotFields("Valo Mvt"), _
        "Somme de Valo Mvt", xlSum
    ActiveWorkbook.ShowPivotTableFieldList = False
    Range("A1").SelectMerci beaucoup pour votre aide.
 
Re : Automatise tâches dans Excel 2007

Bonjour à tous,

Juste en passant : ActiveSheet.UsedRange.Columns.Count te donne le nombre de colonnes utilisées dans ta base de données pour définir la taille de ton TCD.

Tu peux aussi réaliser une "mini-boucle"qui va scanner ta ligne d'en-tête et te rapporter le numéro de la dernière colonne non-vide

Colonne = 1
Do until cells(Colonne,1) = ""
Colonne = Colonne +1
Loop

(de tête : pê que les arguments lignes/colonnes de cells sont inversé)

A+
 
Re : Automatise tâches dans Excel 2007

Encore une question... 😱

J'ai besoin de rajouter un element de recherche à ma macro :

Voilà mon petit language 'logique' pour me faire comprendre...

RECHERCHER SI A1 contient '140' OU '141' OU '142', ALORS SI '140' ECRIRE EN A2 'PARIS', SI '141' ECRIRE EN A2 'TOULOUSE', SI '142' ECRIRE EN A2 'VANNES'

Merci pour votre aide...

Après j'arrête de vous embeter... 🙄🙄🙄
 
Re : Automatise tâches dans Excel 2007

RE,re,
If [A1] Like "*140*" Then [A2] = "PARIS"
If [A1] Like "*141*" Then [A2] = "TOULOUSE"
If [A1] Like "*142*" Then [A2] = "VANNES"

c'est ok et testé

Je n'arrive pas à l'inclure dans ma feuille excel...

J'ai pourtant mis

Code:
Function VILLE()

If [A1] Like "*140*" Then [A2] = "PARIS"
If [A1] Like "*141*" Then [A2] = "TOULOUSE"
If [A1] Like "*142*" Then [A2] = "VANNES"

End If

End Function

Et en A2, j'ai mis =VILLE(A1)

Il doit me manquer qqch !!!

Mikael

P.S. Bon réveillon à tous !!!!
 
Re : Automatise tâches dans Excel 2007

Re 🙂,
Il doit me manquer qqch !!!
Presque rien, juste qu'une fonction attends une entrée (entre les parenthèses) et une sortie (en disant que la fonction vaut telle valeur) 😛...
Code:
Function VILLE(Target As Range) As String
If [Target] Like "*140*" Then VILLE = "PARIS"
If [Target] Like "*141*" Then VILLE = "TOULOUSE"
If [Target] Like "*142*" Then VILLE = "VANNES"
End Function
devrait beaucoup mieux fonctionner 😉.
Bon réveillon à toi aussi 😎
 
Re : Automatise tâches dans Excel 2007

Correction:
Function VILLE(x)
If [A1] Like "*140*" Then VILLE = "PARIS"
If [A1] Like "*141*" Then VILLE = "TOULOUSE"
If [A1] Like "*142*" Then VILLE = "VANNES"
End Function
Bon réveillon


Oups chu devancé, Salut JNP
 
Dernière édition:
Re : Automatise tâches dans Excel 2007

Bonjour,

J'ai un problème sur le début de ma macro, ici (lié à ma demande):

Code:
With Sheets("TransfertInterMagasins")
For k = .[B65000].End(xlUp).Row To 6 Step -1
If .Cells(k, 1) = "" And .Cells(k, 2) <> "" Then .Rows(k).Delete
Next
End With

Le code me permet bien de supprimer les lignes blanches (ou A est vide et B est non vide), mais il s'arrete à la dernière ligne ou A est non vide, et ne traite pas la dernière ligne restante (ou A est vide, et qui par conséquent devrait être supprimé aussi)


J'ai essayé en mettant ceci, comme le disait JNP, mais ça ne marche pas.
Code:
For k = Application.WorksheetFunction.Max(.[A65000].End(xlUp).Row, .[B65000].End(xlUp).Row) To 6 Step -1

Ai-je été clair dans mes explications ?
 
Re : Automatise tâches dans Excel 2007

Bonjour,

Sans doute ecrirai-je quelque chose comme ceci pour déterminer la colonne qui retournera la dernière ligne (A ou B)
Code:
    With Sheets("TransfertInterMagasins")
        Dim derligne As Long
        derligne = Application.Max(.[A65000].End(xlUp).Row, .[B65000].End(xlUp).Row)
        For k = derligne To 6 Step -1
            If .Cells(k, 1) = "" And .Cells(k, 2) <> "" Then .Rows(k).Delete
        Next
    End With

A+
 
Re : Automatise tâches dans Excel 2007

Je viens de remarquer quelque chose.

Dans le fichier que j'ai mis dans mon 1er post, cela marche bien.
Et lorsque je teste dans un autre fichier, il ne me supprime pas la dernière ligne.

J'ai essayer avec ta syntaxe Hasco, mais ça ne marche pas non plus.

Je ne comprends pas.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

E
  • Question Question
Réponses
0
Affichages
682
Excelée
E
Réponses
3
Affichages
2 K
N
Réponses
2
Affichages
2 K
Novice38
N
N
Réponses
4
Affichages
2 K
Novice38
N
B
Réponses
2
Affichages
1 K
K
Réponses
1
Affichages
1 K
K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…