Problème macro VBA Excel

Fermé
kocipia Messages postés 14 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 7 juin 2012 - 23 juil. 2009 à 12:38
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 24 juil. 2009 à 11:19
Bonjour,

Voici en gros ce que doit définir ce bout de macro : Une question est posée si la réponse est 1 alors je copie la cellule U1. Entre les cellules C6 et C20000, je selectionne la première cellule vide.

strReponseQuestion = InputBox("Question ?", "Question", intNombreréponse)

If strReponseQuestion = 1 Then

Sheets("Synchro").Select
Range("U1").Select
Selection.Copy
Sheets("Synchro").Select
Dim Cellule As Range
For Each Cellule In ActiveSheet.Range("C5:C20000")
If Not Cellule Is Nothing Or Cellule.Value = "" Then
Cellule.Select


End If
Next Cellule


Le problème avec ce bout de macro, c'est au moment de sélectionner la derniere cellule vide.

If Not Cellule Is Nothing Or Cellule.Value = "" Then
Cellule.Select


End If
Next Cellule


Ce bout tourne en boucle et me place au final sur la cellule C20000 alors que les cellules C6 à C19999 sont vides. Je précise que je ne peut pas placer de "End" car ma macro doit continuer de tourner ensuite.

Merci par avance pour votre aide car ça fait une heure que je cherche à contourner ce problème.

Kocipia.
A voir également:

4 réponses

kocipia Messages postés 14 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 7 juin 2012
23 juil. 2009 à 12:46
Trouvé ^^

je donne la réponse au cas ou si ça peut aider une autre personne :

Voici le bout de macro qui selectionne la derniere cellule vide. La première ligne montre le point de départ ici il s'agit donc de la cellule B6.

Range("b6").Select
Do While ActiveCell.Value > ""
ActiveCell.Offset(1, 0).Select
Loop

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

A +

Kocipia
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 757
23 juil. 2009 à 13:46
Salut,
Le problème de ce genre de boucle avec select c'est que justement tu "stockes" beaucoup d'infos dans la mémoire de l'ordi qui au fil du temps et de l'utilisation de ta macro va finir par te dire "la mémoire ne peux être read"...
Tu peux remplacer ta boucle par le simple :
Sheets("synchro").Range("C20000").End(xlUp).Offset(1, 0).Select
Cordialement
0
Salut pijaku,

Merci pour ta ligne je change de suite pour éviter mes 5.

Par contre, je viens de créer un fichier excel assez important, le souci c'est qu'il met 2 bonnes minutes à s'ouvrir et un peu moins à s'enregistrer. Il existe pas une méthode pour ce souci ?.

Merci encore

Kocipia
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 757
24 juil. 2009 à 11:19
Salut,
S'il contient des macros, c'est peut être à cause de ça... Les select et d'autres variables stockées peuvent effectivement ralentir énormément l'ouverture d'un classeur Excel. Si c'est le cas, il faudrait revoir tes macros les unes après les autres............
Bon courage
0