cs_Marathon Man
Messages postés71Date d'inscriptionlundi 24 juillet 2006StatutMembreDernière intervention 6 septembre 2006
-
26 août 2006 à 08:44
cs_Marathon Man
Messages postés71Date d'inscriptionlundi 24 juillet 2006StatutMembreDernière intervention 6 septembre 2006
-
26 août 2006 à 22:44
Bonjour,
Je souhaiterais créer une macro afin de tester si plusieurs cellules sont vides sur plusieurs colonnes
Après des heures de recherche, je n'ai pas réussi.
Si vous avez une solution je vous en remercie par avance.
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 26 août 2006 à 18:23
Ah, une troisième :
If bolEnvoiMail = False Then _
MsgBox "Il n'y a aucune données à traiter dans les plages L17:L66 et X15:X66", _
vbCritical, "Envoi de la pièce jointe annulée"
' manque un guillemet après la plage de cellule, dans le message ! ^ici
End Sub
@++
<hr size="2" width="100%" />
--Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 26 août 2006 à 09:07
Salut,
essai ceci :
Sub Cherche_Cellules_Vides_Dans_Selection()
Dim MaCell As Range
' *** sélectionne la zone de recherche dans ta feuille
' ou fait, par exemple, Range("A1:G100").Select
For Each MaCell In Selection
If MaCell.Value = "" Then MsgBox MaCell.Address & " est vide"
Next MaCell
cs_Marathon Man
Messages postés71Date d'inscriptionlundi 24 juillet 2006StatutMembreDernière intervention 6 septembre 2006 26 août 2006 à 09:24
Merci pour ta réponse aussi rapide mais j'ai deux plages de cellules(L17,L38)et X15,X66) Entre les deux colonnes j'ai des informations qui ne sont pas à sélectionner
Je suis débutant et je n'ai pas réussi
J'ai fait un bouton envoyer pour envoyer un fichier joint directement par mail(bon de commande avec des cases)
je lui ai affecté une macro
et je ne veux pas qu'il envoie le fichier si les cellules sont vides(cela voudrait dire que la commande et vierge)
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 26 août 2006 à 09:36
Dim bolEnvoiMail As Boolean
' *** cette variable est à placer dans les déclarations
Sub Cherche_Cellules_Vides_Dans_Selection()
Dim MaCell1 As Range
Dim MaCell2 As Range
Dim MaCell As Range
bolEnvoiMail = True
Set MaCell1 = Range("L17:L38")
Set MaCell2 = Range("X15:X66")
MaCell1.Select
For Each MaCell In Selection
If MaCell.Value "" Then bolEnvoiMail False: Exit Sub
Next MaCell
MaCell2.Select
For Each MaCell In Selection
If MaCell.Value "" Then bolEnvoiMail False: Exit Sub
Next MaCell
End Sub
Ensuite dans ton CommandButton pour envoyer le ficher joint par mail :
' *** Ceci sera la première instruction de l'évènement Click de ce bouton :
If bolEnvoiMail = False Then Exit Sub
Voilà, tu as tous les éléments en main.
Bonne prog
++
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Marathon Man
Messages postés71Date d'inscriptionlundi 24 juillet 2006StatutMembreDernière intervention 6 septembre 2006 26 août 2006 à 09:54
Merci vraiment je vais essayé
Voici pour info ma macro
Sub mail()
'
' mail Macro
' Macro enregistrée le 25/08/2006 par User name placeholder
If Worksheets("DISPOSITIFS").Range("K6").Value = "" Then
MsgBox ("Indiquer votre service SVP")
Exit Sub
End If
If Worksheets("DISPOSITIFS").Range("Q6").Value = "" Then
MsgBox ("Veuillez indiquer votre Unité Fonctionnelle merci.")
Exit Sub
End If
If Worksheets("DISPOSITIFS").Range("H68").Value = "" Then
MsgBox ("Veuillez indiquer votre Nom en bas de la feuille merci.")
Exit Sub
End If
Dim Wbk As Workbook
ThisWorkbook.Sheets("DISPOSITIFS").Copy
Set Wbk = ActiveWorkbook
Wbk.SendMail "[mailto:sylvie.r@wanadoo.fr sylvie.r@wanadoo.fr]", "COMMANDES DISPOSITIFS MEDICAUX"
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 26 août 2006 à 10:05
Bah alors fais ceci :
Dim bolEnvoiMail As Boolean
' *** cette variable est à placer dans les déclarations
Sub mail()
'
' mail Macro
' Macro enregistrée le 25/08/2006 par User name placeholder
Call Cherche_Cellules_Vides_Dans_Selection
If bolEnvoiMail = False Then Exit Sub
If Worksheets("DISPOSITIFS").Range("K6").Value = "" Then
MsgBox ("Indiquer votre service SVP"): Exit Sub
End If
If Worksheets("DISPOSITIFS").Range("Q6").Value = "" Then
MsgBox ("Veuillez indiquer votre Unité Fonctionnelle merci."): Exit Sub
End If
If Worksheets("DISPOSITIFS").Range("H68").Value = "" Then
MsgBox ("Veuillez indiquer votre Nom en bas de la feuille merci."): Exit Sub
End If
Dim Wbk As Workbook
ThisWorkbook.Sheets("DISPOSITIFS").Copy
Set Wbk = ActiveWorkbook
With Wbk
.SendMail "sylvie.r@wanadoo.fr", "COMMANDES DISPOSITIFS MEDICAUX"
.Close
End With
Confirmation.Show
End Sub
Sub Cherche_Cellules_Vides_Dans_Selection()
Dim MaCell1 As Range
Dim MaCell2 As Range
Dim MaCell As Range
bolEnvoiMail = True
Set MaCell1 = Range("L17:L38")
Set MaCell2 = Range("X15:X66")
MaCell1.Select
For Each MaCell In Selection
If MaCell.Value "" Then bolEnvoiMail False: Exit Sub
Next MaCell
MaCell2.Select
For Each MaCell In Selection
If MaCell.Value "" Then bolEnvoiMail False: Exit Sub
Next MaCell
cs_Marathon Man
Messages postés71Date d'inscriptionlundi 24 juillet 2006StatutMembreDernière intervention 6 septembre 2006 26 août 2006 à 11:28
j'ai compris pour les déclartions
en fait on peut voir la macro mail et la même mais en choisissant déclarations
la macro mail declaration aura en plus
Dim bolEnvoiMail As Boolean
Sub mail()
'
' mail Macro
' Macro enregistrée le 25/08/2006 par User name placeholderer
Si tu pouvais me confirmer mais avec de la persévérance on y arrive
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 26 août 2006 à 11:36
J'ai rien compris à ton explication !!
C'est simple, les décarations se trouvent aux plus haut.
Je peux pas mieux t'expliquer, c'est dans les premières lignes du module de code (que ce soit une Form ou un Module)
cs_Marathon Man
Messages postés71Date d'inscriptionlundi 24 juillet 2006StatutMembreDernière intervention 6 septembre 2006 26 août 2006 à 11:44
Set MaCell1 = Range("L17:L66")
Set MaCell2 = Range("X15:X66")
J'ai bien avancé mais ce n'est pas encore ça
J'ai bien mis la macro mais il me slectionne les cellules de L17 à L66
En fait je voudrais qu'il teste la plage de cellules (les deux lignes au dessus ) et
ensuite afficher un msbox si ""
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 26 août 2006 à 11:59
Pas simple, pas simple, t'as juste un copier collé à faire de ce que je t'ai fait !
Dans ton second message, tu dis "j'ai deux plages de cellules(L17,L38)et X15,X66)"
donc c'est normal qu'il y ait
Set MaCell1 = Range("L17:L66")
Set MaCell2 = Range("X15:X66")
la procédure teste donc ces deux plages !
cs_Marathon Man
Messages postés71Date d'inscriptionlundi 24 juillet 2006StatutMembreDernière intervention 6 septembre 2006 26 août 2006 à 12:11
Voilà ce que j'ai fait mëme si je mets 10 dans une cellule cela ne fonctionne pas
Je vais continuer à chercher
voivi la macro pour info
Dim bolEnvoiMail As Boolean
' *** cette variable est à placer dans les déclarations
Sub mail()
'
' mail Macro
' Macro enregistrée le 25/08/2006 par User name placeholder
Call Cherche_Cellules_Vides_Dans_Selection
If bolEnvoiMail = False Then Exit Sub
If Worksheets("DISPOSITIFS").Range("K6").Value = "" Then
MsgBox ("Indiquer votre service SVP"): Exit Sub
End If
If Worksheets("DISPOSITIFS").Range("Q6").Value = "" Then
MsgBox ("Veuillez indiquer votre Unité Fonctionnelle merci."): Exit Sub
End If
If Worksheets("DISPOSITIFS").Range("H68").Value = "" Then
MsgBox ("Veuillez indiquer votre Nom en bas de la feuille merci."): Exit Sub
End If
Dim Wbk As Workbook
ThisWorkbook.Sheets("DISPOSITIFS").Copy
Set Wbk = ActiveWorkbook
With Wbk
.SendMail "[mailto:sylvie.r@wanadoo.fr sylvie.r@wanadoo.fr]", "COMMANDES DISPOSITIFS MEDICAUX"
.Close
End With
Confirmation.Show
End Sub
Sub Cherche_Cellules_Vides_Dans_Selection()
Dim MaCell1 As Range
Dim MaCell2 As Range
Dim MaCell As Range
bolEnvoiMail = True
Set MaCell1 = Range("L17:L66")
Set MaCell2 = Range("X15:X66")
MaCell1.Select
For Each MaCell In Selection If MaCell.Value "" Then bolEnvoiMail False: Exit Sub
Next MaCell
MaCell2.Select
For Each MaCell In Selection If MaCell.Value "" Then bolEnvoiMail False: Exit Sub
Next MaCell
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 26 août 2006 à 12:26
il faut que tu aies absolument des données dans :
K6
Q6
H68
L17:L66
X15:X66
Sinon, voici une simplification de ta procédure Mail :
Sub mail()
'
' mail Macro
' Macro enregistrée le 25/08/2006 par User name placeholder
Call Cherche_Cellules_Vides_Dans_Selection
If bolEnvoiMail = False Then Exit Sub
Worksheets("DISPOSITIFS").Activate
If Range("K6").Value = "" Then
MsgBox ("Indiquer votre service SVP"): Exit Sub
ElseIf Range("Q6").Value = "" Then
MsgBox ("Veuillez indiquer votre Unité Fonctionnelle merci."): Exit Sub
ElseIf Range("H68").Value = "" Then
MsgBox ("Veuillez indiquer votre Nom en bas de la feuille merci."): Exit Sub
End If
Dim Wbk As Workbook
ActiveSheet.Copy
Set Wbk = ActiveWorkbook
With Wbk
.SendMail "sylvie.r@wanadoo.fr", "COMMANDES DISPOSITIFS MEDICAUX"
.Close
End With
cs_Marathon Man
Messages postés71Date d'inscriptionlundi 24 juillet 2006StatutMembreDernière intervention 6 septembre 2006 26 août 2006 à 13:11
il faut que j' ai absolument des données dans :
K6
Q6
H68
et il faut que si toutes les cellules sont vides en même temps de
L17 à L66 et aussi surtout en même temps
X15 à X66 alors msbox
autrement j'ai essaye ce que tu m'as donné et j'ai une erreur sur
Call Cherche_Cellules_Vides_Dans_Selection
erreur de compilation
sub ou fonction non definie
De toute façon, je ne vais pas lâcher le morceau et il faut que je trouve d'ici demain soir car je présente mon projet lundi
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 26 août 2006 à 13:29
Ta as bien insérer tes codes dans un Module ?
Pour ma procédure je viens de la retester, ça fonctionne chez moi !
Place le curseur dans MA procédure et appuie du F8 (exécution pas à pas), et dis moi sur quelle ligne ça plante.
cs_Marathon Man
Messages postés71Date d'inscriptionlundi 24 juillet 2006StatutMembreDernière intervention 6 septembre 2006 26 août 2006 à 13:41
oui j'ai copié mon classeur pour être sûre de ne pas faire de connerie
J'ai remplacé ta procédure dans le module j'avais ma macro mail
et ça plante sur cette ligne
Call Cherche_Cellules_Vides_Dans_Selection
je l'ai mise en rouge
pour info
Sub mail()
'
' mail Macro
' Macro enregistrée le 25/08/2006 par User name placeholder
Call Cherche_Cellules_Vides_Dans_Selection
If bolEnvoiMail = False Then Exit Sub
Worksheets("DISPOSITIFS").Activate
If Range("K6").Value = "" Then
MsgBox ("Indiquer votre service SVP"): Exit Sub
ElseIf Range("Q6").Value = "" Then
MsgBox ("Veuillez indiquer votre Unité Fonctionnelle merci."): Exit Sub
ElseIf Range("H68").Value = "" Then
MsgBox ("Veuillez indiquer votre Nom en bas de la feuille merci."): Exit Sub
End If
Dim Wbk As Workbook
ActiveSheet.Copy
Set Wbk = ActiveWorkbook
With Wbk
.SendMail "[mailto:sylvie.r@wanadoo.fr sylvie.r@wanadoo.fr]", "COMMANDES DISPOSITIFS MEDICAUX"
.Close
End With