Executer macro si cellule vide

tijocanard

XLDnaute Nouveau
Bonjour,

Je suis sur que c'est tout con mais je ne trouve pas comment vider le contenu de 2 colonnes.

J'ai 3 boutons avec des macros derrière.
Je lance mon bouton 1 qui écrit des choses dans ma feuille excel (colonne A et B), et je veux que si je clique sur le bouton 2 ca écrase les anciennes données et ca écrit les nouvelles toujours en colonne A et B.

Voila ce que j'ai essayé de bidouiller :eek:
Code:
If Worksheets("Feuil1").Range("A2:A40,B2:B40").Value <> "" Then
Range("A2:A40, B2:B40").ClearContents
End If
 

tijocanard

XLDnaute Nouveau
Re : Executer macro si cellule vide

Si elle t'a renvoyée un resultat en A35 à 13h30 elle aurait du te renvoyer un résultat en A36 a 13h45

oui en a 36 pardon :eek:
Et donc elle continue à me renvoyer des données (en A37 à 14h00)

Mais le test if ligne >35 devrait pas être dans la boucle with?

Car en gros dans ma macro il commence par vider les cellules de A3 à B50, regarde si il y a des choses après la ligne 35 (forcément faux car vider avant).
Et du coup ma boucle s'éxécute sans condition d'arrêt

Edit: J'ai essayé de placer mon if ligne > 35 dans la boucle ou après ca marche pas
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : Executer macro si cellule vide

Re
Comme je ne peux pas activer la requete, essai de me mettre un fichier exemple avec des données (je dois avouer que je ne comprend pas l'utilisation).
Sur la feuille 1 les données à 13h30 et sur la feuille 2 les données à 13h45 et en rouge ce qu'il y a en trop.
Cordialement
 

tijocanard

XLDnaute Nouveau
Re : Executer macro si cellule vide

Re,

je te joins mon fichier avec les exemples et une petite explication pour que tu comprennes (enfin j'espere :))

Merci pour ton aide (ca doit pas être facile d'aider quand on a du mal à comprendre ce que veux faire la personne!)
 

Pièces jointes

  • Test85.zip
    33.1 KB · Affichages: 35

Efgé

XLDnaute Barbatruc
Re : Executer macro si cellule vide

Re
C'est bien ce que je pensai;
Tu ne commence pas la macro comme je te l'avais conseillé. Il faut commencer par
Code:
Private Sub CommandButton1_Click()
Dim Ligne As Long
Ligne = Range("A65536").End(xlUp).Row + 1
If Ligne > 34 Then Exit Sub
[COLOR=red][B]If Application.CountA(Feuil1.[A3:B50]) > 0 Then[/B][/COLOR] Feuil1.[A3:B50].ClearContents
    With ActiveSheet.QueryTables.Add(Connection:= _ 'etc....
il faut tester la dernière ligne avant de vider les données :rolleyes:.
PS ; Je continu à penser que la partie en rouge ne sert à rien...
Bon courage.
Cordialement
 

tijocanard

XLDnaute Nouveau
Re : Executer macro si cellule vide

Re,

Alors j'ai testé ta solution et la macro ne s'arrette pas à l'heure prévue et je ne peux éxécuter qu'une seule macro (les autres se bloquent quelque soit laquelle j'executer en premier)

Ma macro:
Code:
Private Sub CommandButton1_Click()
Dim Ligne As Long
Ligne = Range("A65536").End(xlUp).Row + 1
If Ligne > 34 Then Exit Sub
Feuil1.[A3:B50].ClearContents
With ActiveSheet.QueryTables.Add(Connection:= _ 'etc....

Du coup j'ai laissé ca:
Code:
Private Sub CommandButton2_Click()
Feuil1.[A3:B50].ClearContents
Dim Ligne As Long
Ligne = Range("A65536").End(xlUp).Row + 1
If Ligne > 34 Then Exit Sub
    With ActiveSheet.QueryTables.Add(Connection:= _

Je comprend en effet qu'il faut tester la dernière ligne avant de supprimer mais ca ne marche pas :(
 

Efgé

XLDnaute Barbatruc
Re : Executer macro si cellule vide

Bonjour tijocanard,
Je suis désolé mais quelque chose m'échappe. Ta requète Oracle te donne une seule ligne ou plusieurs? Si il n'y en a qu'une pourquoi vider la feuille?
Si il y en a plusieurs pourquoi ne pas supprimer les lignes de 35 à la fin?
Essai d'être plus précis parcequ'à l'heure actuelle je nage (plutôt brasse coulée d'ailleurs).
Cordialement
 

tijocanard

XLDnaute Nouveau
Re : Executer macro si cellule vide

Oui je comprend c'est pas clair :eek:

En bref:

Ma requête me renvoit une ligne toutes les 15min à partir du moment ou j'ai lancé ma macro.

Ma macro 1 récupère les résultats entre 05h30 et 13h30, si je l'éxcute à 06h10 par ex il va me sortir donc 3 lignes (05h30, 05h45 et 6h) puis la macro va continuer normalement d'incrémenter 1 ligne chaque 15mn (6h15, 6h30...)

Mon problème actuel est quand j'exécute ma macro1 genre a 15h, il me renvoit bien les données à partir de 05h30 et le dernier résultat étant celui de la base Oracle (soit 14h45): or je voudrais dire à la macro au bout de tel enregistrement tu arrêtes (en l'occurrence l'enregistrement de 13h30 en A34)

Si il y en a plusieurs pourquoi ne pas supprimer les lignes de 35 à la fin?
C'est bien ce que je veux dans le cas ou j'exécute ma macro après 13h30!

Encore une fois je sais que ce n'est pas facile pour toi de m'aider, je te remercie déjà pour ce que tu as fait.

J'ai essayé de mettre des couleurs pour montrer le schmilblick!

Et peut-être que ce n'est pas possible en vb.
Cela se passe au niveau de la requête en fait: si au moment ou j'exécute la requête je n'ai pas 35 résultats, il incrémente chaque 15 min jusqu'à 35 et si la requête renvoi 35 résultats elle s'arrête.
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : Executer macro si cellule vide

Bonjour tijocanard, le fil, le forum
Pour supprimer les lignes après la 34 une proposition (pour le bouton 1 et à recopier pour les autres si cela convient).
Cordialement
 

Pièces jointes

  • Test85(2).zip
    21.3 KB · Affichages: 22

tijocanard

XLDnaute Nouveau
Re : Executer macro si cellule vide

J'étais justement en train de tester la condition "If Ligne > 34 Then Exit Sub"
Voila ou je l'ai mit:
Code:
Private Sub CommandButton2_Click()
Feuil1.[A3:B50].ClearContents
Dim Ligne As Long
Ligne = Range("A65536").End(xlUp).Row + 1
With ActiveSheet.QueryTables.Add(Connection:=
.........

If Ligne > 34 Then Exit Sub
End With
End Sub

J'ai essayé ta solution et ca coince au niveau de l'instruction
Code:
Ligne = Range("A65536").End(xlUp).Row + 1
Du coup je l'ai laissé juste après la déclaration de la variable dim sinon la macro s'éxécute pas

La différence entre nos macros maintenant est alors la condition "If Ligne > 34 Then Exit Sub" que tu as mit après le end with et moi je l'ai mit avant le end with

Je te retiens au courant (vers 13h40 oblige) pour voir si la macro s'est arrêtée à 13h30.

Je pense que l'on voit le bout du tunnel^^ (enfin on verra)

Donc encore merci pour ta patience :)
 

Efgé

XLDnaute Barbatruc
Re : Executer macro si cellule vide

Re
Je pense que tu n'a pas vu mon dernier post,
Il ne faut pas utiliser Exit Sub, mais testé la ligne après importation. Si la ligne est supérieur à 34 on supprime les valeurs de 35 à la fin.
Re-lis le code que j'ai laissé.
Cordialement
 

tijocanard

XLDnaute Nouveau
Re : Executer macro si cellule vide

Re, les enregistrements continuent après 13h30 malgré l'instruction
Code:
If Ligne > 34 Then Range("A35:C" & Ligne).ClearContents

Du coup j'ai bidouillé et mis :
Code:
Feuil1.[A35:A80].ClearContents
Feuil1.[B35:B80].ClearContents
et cela marche :rolleyes:

Dernière question: quand j'ouvre mon classeur excel j'ai toujours ce message sur l'autorisation ou non d'actualiser les données externes automatiquement. :mad:

J'ai pourtant mis:
Code:
.RefreshOnFileOpen = False

Une idée?
 

Discussions similaires

Réponses
7
Affichages
360

Statistiques des forums

Discussions
312 498
Messages
2 088 996
Membres
104 001
dernier inscrit
dessinbecm