Mise en condition avant lancement macro
Résolu
Kakouetta
Messages postés
10
Date d'inscription
Statut
Membre
Dernière intervention
-
Kakouetta Messages postés 10 Date d'inscription Statut Membre Dernière intervention -
Kakouetta Messages postés 10 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je suis en train de créer des macros VBA excel 2010 et je souhaiterais mettre des "conditions" avant le lancement de celles ci :
Macro Archiver : transfert une ligne sélectionnée d'un tableau feuille 4 pour la coller dans un autre tableau feuille 6
Selection.Copy
Sheets("BT ARCHIVES").Select
Rows("6:6").Select
Selection.Insert Shift:=xlDown
ActiveSheet.Paste
Range("A1").Select
Sheets("BT EN COURS").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
Range("A1").Select
Pour son lancement, je souhaiterais une vérification de la cellule colonne U soit mot OK alors lancement de la macro, si autre terme A SUIVRE ou ANNULE pas de lancement de la macro et message "attendre bilan OK", si cellule vide pas de lancement et message "remplir le bilan".
Macro RÉPÉTITIF : transfert une ligne sélectionnée R d'un tableau feuille 4 pour la coller dans un autre tableau feuille 6 et dans le tableau feuille 4 cette ligne se duplique avec effacement de certaines données
Selection.Copy
Sheets("BT ARCHIVES").Select
Rows("6:6").Select
Selection.Insert Shift:=xlDown
Range("A1").Select
Sheets("BT EN COURS").Select
Application.CutCopyMode = False
Selection.Cut
Rows("8:8").Select
Selection.Insert Shift:=xlDown
Range("L8").Select
Selection.ClearContents
Range("M8").Select
Selection.ClearContents
Range("S8:X8").Select
Selection.ClearContents
Range("A1").Select
Pour la seconde macro, j'ai 2 conditions pour la ligne sélectionnée :
en colonne B, la cellule doit faire apparaître la lettre R
en colonne U, mêmes conditions que macro archiver.
lancement de la macro si conditions colonne B cellule=R et colonne U cellule=OK
toutes autres combinaisons en colonne B et colonne U bloquent le lancement de la macro
j'espère pouvoir trouver une aide et avoir suffisamment décrit ma demande
avec tous mes remerciements
je suis en train de créer des macros VBA excel 2010 et je souhaiterais mettre des "conditions" avant le lancement de celles ci :
Macro Archiver : transfert une ligne sélectionnée d'un tableau feuille 4 pour la coller dans un autre tableau feuille 6
Selection.Copy
Sheets("BT ARCHIVES").Select
Rows("6:6").Select
Selection.Insert Shift:=xlDown
ActiveSheet.Paste
Range("A1").Select
Sheets("BT EN COURS").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
Range("A1").Select
Pour son lancement, je souhaiterais une vérification de la cellule colonne U soit mot OK alors lancement de la macro, si autre terme A SUIVRE ou ANNULE pas de lancement de la macro et message "attendre bilan OK", si cellule vide pas de lancement et message "remplir le bilan".
Macro RÉPÉTITIF : transfert une ligne sélectionnée R d'un tableau feuille 4 pour la coller dans un autre tableau feuille 6 et dans le tableau feuille 4 cette ligne se duplique avec effacement de certaines données
Selection.Copy
Sheets("BT ARCHIVES").Select
Rows("6:6").Select
Selection.Insert Shift:=xlDown
Range("A1").Select
Sheets("BT EN COURS").Select
Application.CutCopyMode = False
Selection.Cut
Rows("8:8").Select
Selection.Insert Shift:=xlDown
Range("L8").Select
Selection.ClearContents
Range("M8").Select
Selection.ClearContents
Range("S8:X8").Select
Selection.ClearContents
Range("A1").Select
Pour la seconde macro, j'ai 2 conditions pour la ligne sélectionnée :
en colonne B, la cellule doit faire apparaître la lettre R
en colonne U, mêmes conditions que macro archiver.
lancement de la macro si conditions colonne B cellule=R et colonne U cellule=OK
toutes autres combinaisons en colonne B et colonne U bloquent le lancement de la macro
j'espère pouvoir trouver une aide et avoir suffisamment décrit ma demande
avec tous mes remerciements
A voir également:
- Mise en condition avant lancement macro
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Mise en forme conditionnelle excel - Guide
- Mise a jour chrome - Accueil - Applications & Logiciels
- Mise a jour windows 10 - Accueil - Mise à jour
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
14 réponses
slt,
Pour commencer on va faire des coupe sombre dans ton code pour y voir plus clair. Les select sont toujours affichés par l'enregistreur mais sont à proscrir sit tu veux que ton travail se face rapidement :
Pour commencer on va faire des coupe sombre dans ton code pour y voir plus clair. Les select sont toujours affichés par l'enregistreur mais sont à proscrir sit tu veux que ton travail se face rapidement :
sub Archiver() dim cel as range 'je suppose que ta selection est la ligne entière ? set cel = selection 'il faut que je test sur mon ordi pour verifier que ça génèrepas un décalage with Sheets("BT ARCHIVES").Rows("6:6") .Insert Shift:=xlDown .value = cel.value end with 'tu supprime vraiment toute la feuille ? il manque pas la selection de ta ligne ? je me suis permis de rajouter cel. cel.Delete Shift:=xlUp end sub
ensuite pour verifier ce qui est écri dans la colonne U de ta ligne rien de plus simple utilise la fonction intersect qui te renvoi une range :
sub verif () dim cel as range set cel = intersect(selection, activeSheet.Range("U:U")) 'ensuite un case permet de verifier chacune de tes options : select case cel.value case is = "OK" call archiver() case is ="A SUIVRE" or = "ANNULE" msgbox "attendre bilan ok" case is ="" mgbox "remplir le bilan" end select end sub
Je te laisse modifier la deuxième macro pour qu'elle ressemble à celles que je t'ai mises. avec le recul je ferais plutôt :
'et tu enlève le
archiver(cel as range )
'et tu enlève le
dim celet le
set celde la macro et tu lui dis sur quelle ligne tu travail au moment de l'appel :
call archiver(cel)
merci pour ton temps j'ai testé ta première macro mais cela ne fonctionne pas. il faut savoir que lorsque je l'ai enregistrée, j'avais sélectionné la ligne à transférer. les feuilles 4 et 6 ont les même titres, la première récupère des bons de travaux, la seconde est une archive. pour aller de la 4 vers la 6 il faut que le bilan soit rempli.
une ligne = un bon = un bilan
je libère l'emplacement de la ligne qui par aux archives.
une ligne = un bon = un bilan
je libère l'emplacement de la ligne qui par aux archives.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
pour la seconde proposition je dois la placer entre sub archiver et dim cel as range ou juste après set cel=selection
cette ligne elimine la ligne sélectionnée ou toute la feuille ?
cel.Delete Shift:=xlUp
cette ligne elimine la ligne sélectionnée ou toute la feuille ?
cel.Delete Shift:=xlUp
En gros, la macro veriif va appeler la macro archiver.
J'imagine que tu as placer un bouton, ton bouton devrait lancer la macro verif et non pas la macro archiver.
Si on résume, tu ne place pas verif dans archiver, mais tu appel la macro verif avec ton bouton et la macro verif, selon les conditions, va appeler la macro archiver ou faire apparaître le message box.
J'imagine que tu as placer un bouton, ton bouton devrait lancer la macro verif et non pas la macro archiver.
Si on résume, tu ne place pas verif dans archiver, mais tu appel la macro verif avec ton bouton et la macro verif, selon les conditions, va appeler la macro archiver ou faire apparaître le message box.
Pour la 2ieme question, Cel est une variable qui correspond a ce qui est selectionné.
cel = selection
Donc,
Si tu selectionnes une ligne, cel c'est une ligne.
Si tu selectionnes deux ligne, cel c'est deux ligne.
Si tu selection la page entière, cel c,est la page entière.
Ensuite, quand on delete Cel, bien on delete ce qui était sélectionné.
cel = selection
Donc,
Si tu selectionnes une ligne, cel c'est une ligne.
Si tu selectionnes deux ligne, cel c'est deux ligne.
Si tu selection la page entière, cel c,est la page entière.
Ensuite, quand on delete Cel, bien on delete ce qui était sélectionné.
La feuille 4 et 6 avait pas deux nom differents ?
quand tu dis que ça ne fonctionne tu peux présciser genre : ligne qui plante, resultat, type d'erreur, ne fait pas ce qui est attendu, un grizzly a détruit ton ordinateur... :-)
Sheets("BT EN COURS") Sheets("BT ARCHIVES")
quand tu dis que ça ne fonctionne tu peux présciser genre : ligne qui plante, resultat, type d'erreur, ne fait pas ce qui est attendu, un grizzly a détruit ton ordinateur... :-)
Bonjour lors de la copie dans la feuille 6, la ligne (6:6) change de format, la ligne sélectionnée est copiée mais les mises en forme conditionnelles ne s'appliquent pas. j'ai vérifié les mises en forme conditionnelles au départ et elles sont correctes.
Merci pour toutes les infos, je repars reformuler mes macros
Merci pour toutes les infos, je repars reformuler mes macros
lorsque je lance la macro verif par le bouton (j'ai indiquer affectation verif dans son code) l'écran me signale erreur d'exécution '13' incompatibilité de type
erreur d'exécution porte sur
case is ="A SUIVRE" or = "ANNULE"
ou pour l'autre macro
Case Is = "U" Or "C" Or "S"
soit les infos bloquant et induisant les msgbox
case is ="A SUIVRE" or = "ANNULE"
ou pour l'autre macro
Case Is = "U" Or "C" Or "S"
soit les infos bloquant et induisant les msgbox
J'avais jamais essayer de mettre un
ça devrait mieux marcher
cordialement,
N'oubliez pas de marquez votre post comme résolu !
ordans un case, ça doit pas être possible, donc la solution est de l couper en 2 :
'ensuite un case permet de verifier chacune de tes options : select case cel.value case is = "OK" call archiver() case is ="A SUIVRE" msgbox "attendre bilan ok" case is = "ANNULER" msgbox "attendre bilan ok" case is ="" mgbox "remplir le bilan" end select
ça devrait mieux marcher
cordialement,
N'oubliez pas de marquez votre post comme résolu !