Arrêter macro si une cellule est "#N/A" ou vide
Bonjour,
Dans ma macro je veux insérer une boite de dialogue pour donner une marche à suivre lorsque quand dans une plage de cellule elle voit #N/A (à cause d'une recherchev) ou cellule vide si je converti un #N/A en cellule vide.
Ca se présente comme suit:
Sub MacroSN()
Dim Roue As Long
Dim MaPlage As Range, Cel As Range
'Colle les nouveaux S/N du fichier .csv
Sheets(2).Select
Range("A2:A19").PasteSpecial xlPasteValues
Sheets(1).Select
- Faire le test ici -
Range("D2") = "1" Then
InputBox ("Vide")
Exit Sub
- continuer la macro sans boite de dialogue si test négatif -
'Demande le numéro du jeu
Roue = InputBox("Quel est le N° du nouveau Jeu d'Aubes 913 ?")
'Colle le numéro du jeu dans la feuille de mise en caisse
Range("A2") = Roue
'Demande le nombre d'impression à faire
Rep2 = InputBox("Combien de copies ? ", , 1)
If Rep2 = "" Then Exit Sub
Sheets("Liste Jeu").PrintOut copies:=Rep2
'Sauvegarde
ActiveWorkbook.Save
End SubJ’essaie déjà de voir si ça fonctionne une cellule mais j'ai un message d'erreur avec le end if(car je sais pas où le mettre) ou autre.
J'ai parcouru plein de site et je trouve pas ce qu'il me manque.
Merci d'avance.
Bonjour,
Vous pourriez mieux expliquer ce que vous voulez faire ou placer un fichier sans données confidentielles
Exemple ici
Range("D2") = "1" Then
InputBox ("Vide")
Exit SubVous voulez faire quoi là ?
Actuellement si D2 = 1 on affiche une inputbox à compléter puis vous sortez de la macro. Pourquoi ?
Déjà le
Range("D2") = "1" Then
InputBox ("Vide")
Exit SubMe dit erreur de syntaxe, et je dois mettre une MsgBox qui va afficher "faire maj" et quand on clique "OK" ça quitte la macro.
Je dois sortir de la macro car la feuille que je vais imprimer va manquer de données, donc on fait une maj des données dans un autre onglet du fichier.
En gros.
- On colle les données
- si dans la plage de cellule, une seule est vide ou #N/A, alors boite dialogue pour l'indique
- si aucune cellule vide continue la macro normalement.
Je vais essayer de mettre un fichier car celui que j'utilise est trop lourd.
Du coup je me suis retrouvé avec ça:
If Range("D2" = 0) Then
vide = MsgBox("test", vbOKCancel)
If (vide = 0) Then
Exit Sub
End If
MsgBox ("ok")Et juste avant avec je dois faire ma vérification
Je pense avoir trouvé, si jamais on peut optimiser.
If Range("D2") = 0 Then 'D2 étant une cellule test et 0 pour vide mais en réalité j'ai #N/A
MsgBox("Faire la MAJ")
Exit Sub
Else
MsgBox ("on continu") 'sera effacé c'est pour le test
End IfMaintenant je dois trouver une solution pour que D2 devienne ma plage B2:C19 et comme c'est une recherchev j'ai #N/A. Une idée pour récupérer cette info?
Bonjour
essayez ceci
Sub test()
Dim rng As Range
On Error Resume Next
Set rng = ActiveSheet.Range("D2:D10").SpecialCells(xlCellTypeFormulas, 16)
If Err.Number = 0 Then
MsgBox "faire MAJ sur cellule " & rng.Address
End If
End subLe message vous renverra toutes les cellules où vous avez une erreur
Si ok -->
Cordialement
Bonjour,
Je vais essayer à l'occasion car ça simplifiera ce que j'ai fais peut être.
En gros sur mes cellules j'ai fais =sierreur(recherchev blabla;1) et dans une autre cellule (D2 du coup mdr) une somme, comme ça dès que j'ai D2 >0 ça veut dire qu'il y a une erreur.
Merci pour l'aide en tous cas.