Faire comprendre une cellule selectionner

D

David

Guest
Bonjour à tous,

Je n'arrive pas a concrétiser ma macro.
J'aimerais que si en "A1" il y a du texte, une MsgBox s'ouvre avec ok ou non et que le reste de la macro s'execute.
Mon pb, c'est le début de la macro, je n'arrive pas à comprendre la selection de ma cellule A1 ?

Merci de votre aide,
David.


Sub ExecutExpertise()
Dim vCellule, vRéponse
For Each vCellule In Selection
If IsEmpty(vCellule)=TrueThen
vRéponse = MsgBox("Le véhicule a t'il été expertisé ?", vbYesNo + vbQuestion)
If vRéponse = vbYes Then
vRéponse = ActiveCell.FormulaR1C1 = "CABINET JR EXPERTISES"
Range("B29:I29").Select
ActiveCell.FormulaR1C1 = "12 RUE DES TILLEULS"
Range("F30").Select
ActiveCell.FormulaR1C1 = "78960"
Range("G30:I30").Select
ActiveCell.FormulaR1C1 = "VOISINS LE BTX"

Else
vRéponse = ActiveCell.FormulaR1C1 = ""
Range("B29:I29").Select
ActiveCell.FormulaR1C1 = ""
Range("F30").Select
ActiveCell.FormulaR1C1 = ""
Range("G30:I30").Select
ActiveCell.FormulaR1C1 = ""
End If
Next
End Sub
 
P

Patrick C

Guest
Bonjour et bon appétit à toi David et au forum,

le problème, je pense, vient du fait que tu ne sélectionnes rien.
Tu écris "For Each vCellule In Selection"
Mais tu n'attribues rien à Selection.

A l'ouverture, il prendra par défaut la cellule A1, mais pas forcément pour la suite.
Ensuite tu modifies ta sélection à chaque Boucle de For, car avant d'écrire dans une cellule, tu écris
   "Range("BXX:IXX").Select"
   cela modifie "Selection" à chaque fois


si tu veux spécifier une seule cellule, tu écrits:
cells(1,1).select ( à personnaliser)

ou si tu veux spécifier une plage de données, tu écris:

Range("A1:A12").Select (idem)


essaie peut être ce code

j'espère que je suis clair (j'en doute, mais je n'ai pas trop saisi ce que tu voulais faire)

Cordialement

Patrick

-----------------------------------------
Sub ExecutExpertise()
Dim vCellule, vRéponse

   'définition de la zone à sélectionner
Range("A1:B2").Select

For Each vCellule In Selection
   If IsEmpty(vCellule) = True Then
      vRéponse = MsgBox("Le véhicule a t'il été expertisé ?", vbYesNo + vbQuestion)
      If vRéponse = vbYes Then
         vRéponse = ActiveCell.FormulaR1C1 = "CABINET JR EXPERTISES"
         Range("B29") = "12 RUE DES TILLEULS"
         Range("F30") = "78960"
         Range("G30") = "VOISINS LE BTX"
      Else
         vRéponse = ActiveCell.FormulaR1C1 = ""
         Range("B29") = ""
         Range("F30") = ""
         Range("G30") = ""
      End If
   End If
Next
End Sub
 
W

WILFRIED

Guest
Salut David,

Le code que tu fournis est il une recopie exact ou à tu supprimée des ligne car il te manque la selection:

Sub ExecutExpertise()
Dim vCellule, vRéponse
For Each vCellule In Selection

il te faudrait un range avant la boucle for each.

il manque également l'espace entre "=true" et "then" dans la ligne suivante.
Tu ouvre une boucle if then end if mais tu n'as qu'un seul end if.

Donc pour moi cela donnerai :

Sub ExecutExpertise()
Dim vCellule as range
dim vRéponse

'si ta cellule de référence est situer dans la colonne "A"
range("A65536").select
range("A1",activecell.end(xlup)).select
For Each vCellule In Selection
If IsEmpty(vCellule)=TrueThen
vRéponse = MsgBox("Le véhicule a t'il été expertisé ?", vbYesNo + vbQuestion)If vRéponse = vbYes Then
vRéponse = ActiveCell.FormulaR1C1 = "CABINET JR EXPERTISES"
Range("B29:I29").Select
ActiveCell.FormulaR1C1 = "12 RUE DES TILLEULS"
Range("F30").Select
ActiveCell.FormulaR1C1 = "78960"
Range("G30:I30").Select
ActiveCell.FormulaR1C1 = "VOISINS LE BTX"

Else
vRéponse = ActiveCell.FormulaR1C1 = ""
Range("B29:I29").Select
ActiveCell.FormulaR1C1 = ""
Range("F30").Select
ActiveCell.FormulaR1C1 = ""
Range("G30:I30").Select
ActiveCell.FormulaR1C1 = ""
End If
end if
Next
End Sub

si seulement la cellule A1 t'interresse :

Sub ExecutExpertise()
Dim vRéponse
'si ta cellule de référence est situer dans la colonne "A"
range("A1").select
If IsEmpty(activecell.value)=TrueThen
vRéponse = MsgBox("Le véhicule a t'il été expertisé ?", vbYesNo + vbQuestion)
If vRéponse = vbYes Then
vRéponse = ActiveCell.FormulaR1C1 = "CABINET JR EXPERTISES"
Range("B29:I29").Select
ActiveCell.FormulaR1C1 = "12 RUE DES TILLEULS"
Range("F30").Select
ActiveCell.FormulaR1C1 = "78960"
Range("G30:I30").Select
ActiveCell.FormulaR1C1 = "VOISINS LE BTX"

Else
vRéponse = ActiveCell.FormulaR1C1 = ""
Range("B29:I29").Select
ActiveCell.FormulaR1C1 = ""
Range("F30").Select
ActiveCell.FormulaR1C1 = ""
Range("G30:I30").Select
ActiveCell.FormulaR1C1 = ""
End If
end if
End Sub

A+ et bon week-end

Wilfried ;op
 
R

Robert

Guest
Salut David, salut le forum,

Étrange ta macro puisqu'elle fait le contraire de ce que tu demandes "J'aimerais que si en "A1" il y a du texte". Dans ce cas, if faudrait commencer par :

If Not IsEmpty(vCellule)=True Then

Puis je ne comprends pas la boucle sur toutes les cellules de la sélection si tu ne veux vérifier que l'état de A1...

à tout hasard je te propose ça :

Sub ExecutExpertise()
Dim vCellule As Range, vRéponse As Byte
If Not IsEmpty(Range("A1")) = True Then
vRéponse = MsgBox("Le véhicule a t'il été expertisé ?", vbYesNo + vbQuestion)
If vRéponse = vbYes Then
Range("A1").Value = "CABINET JR EXPERTISES"
Range("B29:I29").Value = "12 RUE DES TILLEULS"
Range("F30").Value = "78960"
Range("G30:I30").Value = "VOISINS LE BTX"
Else
Range("A1").Value = ""
Range("B29:I29").Value = ""
Range("F30").Value = ""
Range("G30:I30").Value = ""
End If
End If
End Sub

À plus,

Robert
 
D

David

Guest
Chers amis,

Merci de mettre venu en aide et de m'avoir fourni nombres de réponses.

- Pour répondre à vos interrogations et surprise :

Le fait que j'ai pris la cellule A1 pour exemple est en effet une erreur.
Ayant passé plus de deux heures devant ma macro sans toutefois trouver de réponse, j'ai pris un mauvais exemple en stipulant A1.
Je m'en excuse platement.

Ensuite, mon collegue de travail, qui n'est jamais en retard pour déjeuner commencait à taper du pied au moment où j'ai entrepris d'aller sur le forum !!
Dans l'empressement, j'ai donc copier-coller ma macro, avec en prime des formulations inexates !

En tout état de cause je vous remercie de vous être penché sur le pb, avec en prime la solution !

@ + bon week à tous,
David.
 

Statistiques des forums

Discussions
312 389
Messages
2 087 936
Membres
103 678
dernier inscrit
bibitm