VBA pour une macro Excel

Résolu/Fermé
Bastien - 8 nov. 2008 à 15:30
 Bastien - 9 nov. 2008 à 14:14
Bonjour je me trouve devant un problème dans Excel :

Je pense arriver à la limite du logiciel, en effet j'utilise Excel dans le but de travailler avec une base de données ACCESS mais avec plus de souplesse :

Concrètement une ligne dans Access est regroupée avec d'autres lignes lors de l'affichage de l'état pour plus de clarté. Cet état est extrait vers Excel qui transforme ce regroupement en un plan Excel : jusque là pas de soucis!

Cependant nous devons utiliser le mode filtre de Excel et là les choses ce compliques : en effet lors de la retranscription du plan sur Excel : les données ce répétant à chaque lignes sont absente puisque qu'il ya eu regroupement dans l'état

Il y a donc des lignes vides dans la basse de donnée Excel : conséquence : lorsque nous utilisons le filtre + le plan déplié les informations ne sont pas cohérente.

Etant donné que nous devons imprimé ce document de la façon la plus claire possible nous devons garder l'aspect de l'état Access et donc de ne pas avoir de donnée répétitive sur les colonnes

Ma demande est la suivante : pour palier à ce problème il suffit de demander a Excel dans toutes les cellules vides (c'est à dire la plage de cellule A3:P3)
De prendre la valeur de la cellule au dessus : soit cellule vide = E3, idem pour toutes les autres de la plage en question. Enfin pour gardez la lisibilité lors de l'impression il suffit de mettre cette plage de donnée en blanc pour qu'elle soit invisible à l'impression et finalement faire un copier coller de cette plage sur chaque ligne vide ou il y en a besoin.

Mes compétences s'arrêtant a la frontière du VBA et ayant essayé de trifouillé avec l'enregistreur de macro pour voir sans succès ce qu'il ce passe je demande de l'aide :

Serait t'il possible d'écrire une macro afin d'éviter ce copier coller fastidieux :
Par exemple :
Dans la plage de donnée sélectionner, si cellule vide = prendre la valeur du dessus, avec la police de couleur blanche


Je vous remercie par avance de votre aide si possible.

6 réponses

lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
8 nov. 2008 à 19:07
Bonjour,
Je ne comprend pas bien ce que tu veux faire, il me semble que mettre les cellule vide "non vide" (même pas besoin de prendre la valeur du dessus) et de mettre la couleur texte en blanc est l'ABC de VBA et comme tu dit que tu travail avec Access sur VBA Excel c'est que tu t'y connais.
Explique un peu mieux la difficulté que tu rencontre.
A+
0
Je ne maitrise justement pas ACCESS qui s'arrête aux table, requètes et formulaire voir état avec l'assistant ainsi que un peut de SQL.
le VBA m'est donc inconnu et je tente en parrallèle de l'aprendre, mais je suis incapable actuellement de faire ce dont j'ai besoin en VBA Excel.

Concernant mon problème je vais précisser l'action possible du code :

Je sélectionne une plage de donnée.

Je lance la macro qui :

Test si une cellule est vide,

Si une cellule est vide alors prendre la valeur de la cellule étant dans la même collone mais étant dans la ligne au dessus (soit la ligne de la cellule testé -1 donc si la cellule testé est B129 la cellule vide doit prendre la valeur de la cellule B128) mais en remplacant la couleur de la police en blanc.

Si la cellule n'est pas vide alors ne rien faire.

End sub (sa je connai MDR!)


L'objectif étant que je puisse utiliser un filtre dans excel d'où l'intérets de n'avoir aucunes cellule vide, et de prendre la valeur d'une celulle qui est au dessus. le fait que la police soit en blanc me permettra d'avoir une meilleur lisibilité à l'impression, c'est tout.

DSL si ma demande semble relevé du B.A.BA ! j'ai oublier de mensionner que toutes les données vides était dans un plan excel, mais je ne pense pas que celà change quelque chose?

J'espère être asser concret pour que vous puissiez m'aider.
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
8 nov. 2008 à 21:43
OK, compris
Sub ChercheVide()
Dim Cel As Range
    For Each Cel In Range("A3:P3") 'Adapter l'adresse à toute la plage nécessaire
    'par exemple "A3:Z40")
        If Cel = "" Then
            Cel = Cel.Offset(-1, 0)
            Cel.Font.ColorIndex = 2
        End If
    Next Cel
End Sub


A+
0
le résultat est bon mais il manque juste une chose, je vien de tester et, a moins que sa soit moi qui soit incapable lol on ne sait jamais, il me semble qu'en faite cela n'a d'action que sur la plage de celulle A3:P3,

Le must sa serait que la même action s'execute mais sur la plage de donnée que je sélectionne dans excel avec mon curseur.

Est-ce possible?

Merci en tout cas c'est rassurant de voir que j'ai pas chercher pour rien, c'est possible lol
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
9 nov. 2008 à 00:46
Beh.. moi j'ai lu.. (c'est à dire la plage de cellule A3:P3)

Mais pas de problème, tu remplace par...
For Each Cel In Selection

A+
0
Impecable, merci beaucoup,
sa va me facilité grandement la vie !!!!

Je suis décidé a apprendre le VBA !!!
0