lancement auto de macro celon contenu d'une cellule

guy974

XLDnaute Junior
Bonjour,

Salut à tous,

Que faudrait'il mettre dans ThisWorkbook juste avant ma condition pour que

ma macro s'écute automatiquement lorsque la condition (contenu d'une cellule = OK) est remplie ?

Guy
 

Pierrot93

XLDnaute Barbatruc
Re : lancement auto de macro celon contenu d'une cellule

Bonjour Guy

Pourquoi tu parles de thisworkbook, a priori mais il manque sans doute certaines données du problème je mettrais un code dans l'événement change de la feuille en question.

Pour plus de détails mets un fichier en pièce jointe pour que nous puissions avoir plus d'éléments pour te répondre.

Bonne journée
@+
 

guy974

XLDnaute Junior
Re : lancement auto de macro celon contenu d'une cellule

Merci beaucoup pour l'intérêt porté

Voici mon fichier

En fait j'ai 2 problèmes

1/ la macro que je veux automatisé à un bug et ne termine pas si je la lance manuellement (le copier coller final)

2/ je souhaite l'automatiser

L'explication est dans le fichier
 

Pierrot93

XLDnaute Barbatruc
Re : lancement auto de macro celon contenu d'une cellule

Re Guy,

A priori tu as 2 "END IF" à la fin, il y en a un de trop que tu peux enlever, par contre j'ai modifié le :

Code:
Paste:=xlPasteValuesAndNumberFormats

en

Code:
Paste:=xlPasteValues

pas géré dans ma version (excel 2000 au travail).

Par contre qu'entends tu par automatiser une macro ?

La lancer à l'ouverture du classeur, voir evenement

"Private Sub Workbook_Open()"

ou bien lorsqu il y a des modifs sur la feuille, dans ce cas voir l'evenement

"Private Sub Worksheet_Change(ByVal Target As Range)"

Bon après midi
@+
 

Gorfael

XLDnaute Barbatruc
Re : lancement auto de macro celon contenu d'une cellule

Salut guy974, Pierrot93, et les autres

j'ai regardé le fichier zippé : voilà ce qui ressort de mes cogitations :

- variables globales à éviter, mais comme je n'ai que la macro test...
dans tout les cas, une ligne pouvant aller jusqu'à 65536, il est préférable de déclarer les variables lignes en LONG
début de la macro à modifier : une formule rend la cellule <> "" => tu pointes pas sur celle que tu attends :
Code:
Sub test()
Dim Linf As Long
Dim Lsup1 As Long
Dim Lsup2 As Long

With Sheets("Enregistrements")
    For Linf = .Range("N65536").End(xlUp).Row To 1 Step -1
        If .Range("N" & Linf) = "FIN" Then Exit For
    Next Linf
    
    Lsup1 = Linf - 4
    Lsup2 = Linf - 2
                   
    If .Range("N" & Linf) = "FIN" And .Range("O" & Linf) = "" Then
        .Range(.Cells(Linf, 13), .Cells(Lsup1, 13)).Copy 
        Sheets("Feuil1").Select 'feuille cible (carte de contrôle)
        Range("A6").Select 
        Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, _
               Operation:=xlNone, SkipBlanks:=False, Transpose:=True
    End If
End With
End Sub
c'est nettement meilleur (puisque c'est moi qui l'ai fait :) )

- tu ne peux pas activer une autre feuille, puisque tu es sur un module de classe lié à une feuille => plantage
Donc tu transfères ta macro :
- Soit sur un module général (ou colonnel)
- Soit sur le module ThisWorkBook
- Soit sur le module lié à la feuille destination
et elle fonctionnera


Comme dit Pierrot93 : une macro automatique se déclenche par une action. Donc à laquelle tu penses ?
A+
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : lancement auto de macro celon contenu d'une cellule

Bonsoir Gorfael, re Guy

Gorfael, petite question stupide sans doute, pourquoi parles tu de module de "classe" alors que le code se trouve dans la feuille ?
J'avoue que les modules de classes m'interpellent toujours, j ai pas bien saisi leurs utilité a part dans la manipulations des objets et encore !!!

c'est nettement meilleur (puisque c'est moi qui l'ai fait )

- tu ne peux pas activer une autre feuille, puisque tu es sur un module de classe lié à une feuille => plantage

Bonne soirée
@+
 

Gorfael

XLDnaute Barbatruc
Re : lancement auto de macro celon contenu d'une cellule

Pierrot93 à dit:
Bonsoir Gorfael, re Guy

Gorfael, petite question stupide sans doute, pourquoi parles tu de module de "classe" alors que le code se trouve dans la feuille ?
J'avoue que les modules de classes m'interpellent toujours, j ai pas bien saisi leurs utilité a part dans la manipulations des objets et encore !!!



Bonne soirée
@+
Re...

Déformation Access : c'est peut-être pas la vérité, mais c'est comme ça que je les conçois :
module général = feuille de macro
Module de classe : module général avec des propriétés particulières qui sont définies pour l'ensemble des modules appartenant à la classe
tu as au moins 3 "classes de modules dans Excle
- module lié à une feuille : automatiquement; il admet l'objet sheets et lui attribue des événements spécifiques :change etc....
- module ThisWorkBook il à des propriétés spécifiques :newsheet, etc...
- module USF : initialise, etc...

en gros, la partie (générale) est toujours la même quand ils appartiennent à la même classe

C'est comme les contrôles : prends le cas des combobox, listbox : ils ont les mêmes propriétés, malgrés certaines différences

on parle de classe des qu'un objet appartenant à celle-ci présente les même particularités qui au lieu de demander une définition à chaque fois, sont présente par défaut

A+
 

Discussions similaires

Réponses
4
Affichages
127

Statistiques des forums

Discussions
312 715
Messages
2 091 285
Membres
104 836
dernier inscrit
baxx86