[VBA] Besoin d'aide pour la création d'une macro [Résolu]

villette54

XLDnaute Junior
Bonjour,

Je suis débutant en VBA, et j'ai dans le cadre de mon travail, besoin d'utiliser VBA de façon un peu plus avancée que ce que je suis capable de faire.

Il s'agit d'un fichier pour lequel je dois extraire des infos d'une "base de données" si je puis dire, et en ajouter. J'ai pour ce faire créer 4 boutons, qui doivent chacun remplir une fonction. Seulement je suis incapable de transposer ce que je souhaite dans VBA. (Toutes les explications de mes besoins se trouve sur mon document)

Je cherche donc quelqu'un qui pourrait m'aider à créer ces macros, ou au moins me mettre sur la piste parce-que actuellement, malgré tous les tutos que je consulte je suis dans le flou total.

Merci d'avance pour votre aide.
 

Pièces jointes

  • Test Suivi Cotopo.xlsm
    113.7 KB · Affichages: 147
Dernière édition:

villette54

XLDnaute Junior
Re : [VBA] Besoin d'aide pour la création d'une macro

Bonjour !

L'ajout de ce calendrier n'était qu'un gadget sur mon document.
Si c'était relativement "simple", je l'aurais ajouté mais là je ne pense pas que le calendrier que tu proposes Chalet soit adapté (plusieurs personnes vont utiliser le fichier, dont certaines qui ne touche à un PC que pour le remplir)
Quant à ton idée Tirou (les 3 listes déroulantes), elle est plus envisageable mais bon il va falloir que j'ajoute x colonnes et que je m'amuse à refusionner tout ce qui doit l'être sur toute la hauteur du formulaire, pour au final un intérêt assez limité.

Autre chose qui pourrait m'être plus utile, est-il possible que la hauteur d'une cellule fusionnée s'ajuste automatiquement en fonction de la longueur texte à l'intérieur ? (Si ne je suis pas clair, je mettrais un fichier en exemple)
 
Dernière édition:

CHALET53

XLDnaute Barbatruc
Re : [VBA] Besoin d'aide pour la création d'une macro

Bonjour,

Essai ce code de Job75

Sub AjusteEnHauteur()
For Each cel In ActiveSheet.UsedRange
If cel <> "" Then
Set m = cel.MergeArea
m.UnMerge
m.WrapText = True 'renvoie à la ligne
m.HorizontalAlignment = xlCenterAcrossSelection
m.Rows.AutoFit
m.Merge
m.HorizontalAlignment = xlGeneral 'facultatif bien sûr
End If
Next
End Sub

a+
 

villette54

XLDnaute Junior
Re : [VBA] Besoin d'aide pour la création d'une macro

Merci mais...
J'ai fais un essai mais ce n'était pas très concluant (ça m'a massacré toute la mise en page)
Sais-tu comment je peux faire pour qu'il ne s'applique qu'à quelques cellules de mon document ?
 

CHALET53

XLDnaute Barbatruc
Re : [VBA] Besoin d'aide pour la création d'une macro

Re,

Avec une procédure événementielle
Dans l'exemple, la procédure ne s'applique qu'aux cellules encadrées

a+
 

Pièces jointes

  • Villette 54 V4.xlsm
    14.2 KB · Affichages: 78
  • Villette 54 V4.xlsm
    14.2 KB · Affichages: 82
  • Villette 54 V4.xlsm
    14.2 KB · Affichages: 82

villette54

XLDnaute Junior
Re : [VBA] Besoin d'aide pour la création d'une macro

Re,

J'ai des cellules fusionnées en "ligne" de B27 à F27 par exemple.
Dans ces cellules les utilisateurs peuvent être amenés à taper 2 mots, ou un roman.
Du coup j'aimerais que la hauteur de la ligne s'ajuste automatiquement en fonction de la quantité de texte.

J'ai beau utilisé la macro que tu proposes et l'adapter, la taille de la cellule ne se modifie pas.
 

CHALET53

XLDnaute Barbatruc
Re : [VBA] Besoin d'aide pour la création d'une macro

En fusionnant les cellules, je n'ai pas le problème

As-tu redéfini les zones de la macro
 

Pièces jointes

  • Villette 54 V4.xlsm
    14.2 KB · Affichages: 75
  • Villette 54 V4.xlsm
    14.2 KB · Affichages: 74
  • Villette 54 V4.xlsm
    14.2 KB · Affichages: 77

Si...

XLDnaute Barbatruc
Re : [VBA] Besoin d'aide pour la création d'une macro

salut

j'avais commencé à chercher (d'une façon totalement différente).
Je viens de rajouter un calendrier sommaire.
Attention, la saisie des nouveautés, par formulaire, n'est pas contrôlée.
On peut encore y rajouter les corrections de données.
 

Pièces jointes

  • Recherches et Ajout (UsF).xlsm
    137.7 KB · Affichages: 78

Tirou

XLDnaute Occasionnel
Re : [VBA] Besoin d'aide pour la création d'une macro

Un essai pour le choix de la date par multi liste déroulantes.

La case cachée en dessous prend en compte la date au format 01/02/2012 pour la compatibilité avec d'éventuelles macros. (la couleur du texte est blanc sur blanc pour la cacher)

Par contre, une fois fini, je me rends compte d'un bug : l'activation de la macro suite au changement dans la feuille fait passer le mois en anglais ... alors là, je n'ai aucune idée de comment résoudre le problème.

Autre problème connu : on peut entrer la date du 31 février ... Corrigeable dans un second temps, mais d'abords est-ce que cette solution de parait viable pour ton application?
 

Pièces jointes

  • Formulaire Test.xlsm
    28.4 KB · Affichages: 93
  • Formulaire Test.xlsm
    28.4 KB · Affichages: 78
  • Formulaire Test.xlsm
    28.4 KB · Affichages: 80

villette54

XLDnaute Junior
Re : [VBA] Besoin d'aide pour la création d'une macro

Bonjour à tous,
Et merci pour votre aide.

Chalet, oui j'ai redéfini les zones de la macro. Voici ma macro actuelle :
Code:
       If Not (Intersect(Target, Range("B38,B42,B49,B53,B57,B69,B77,B87")) Is Nothing) Then
             For Each cel In ActiveSheet.UsedRange
            If cel <> "" Then
            Set m = cel.MergeArea
            m.UnMerge
            m.WrapText = True 'renvoie à la ligne
            m.HorizontalAlignment = xlCenterAcrossSelection
            m.Rows.AutoFit
            m.Merge
            m.HorizontalAlignment = xlGeneral 'facultatif bien sûr
            End If
            Next
        End If

End Sub
Effectivement, la macro fonctionne lorsque j'écris dans une de ces cellules, mais à coté de ça elle me modifie/supprime la mise en page de toute les autres cellules fusionnées du formulaire.
J'ai essayer avec ou sans le code dans le module 1 (celui là je l'ai gardé tel quel) mais rien n'y fais. Toutes mes hauteurs de cellules sont modifiées, et non pas seulement celle dans laquelle j'écris.

'---------------------------------------

Si..., je n'arrive pas à utiliser ton USF. Dès que je clique sur date ou sujet j'ai ceci qui se met en erreur (ce qui est avancé) :
Code:
                            Private Sub L1_Click()
  Me.Height = 100
  B = 0
  C1.Clear: L2.Clear
  n = L1.ListIndex
                                Td = n = 0
Avec comme message : Can't find project or library.

'---------------------------------------

Tirou, huum effectivement cette solution est envisageable si on met les listes déroulantes de la taille de la cellule. Le fait que le mois soit en anglais n'est pas vraiment un problème. Est-il possible de voir pour un conditionnement de manière à éviter les blagues du genre tous le 31 février.
Autre question, ta solution est-elle transposable rapidement ? Le fichier que j'en envoyé n'est qu'un extrait du formulaire, je dois avoir au total 3 ou 4 cellules qui demandent une date.
 
Dernière édition:

Tirou

XLDnaute Occasionnel
Re : [VBA] Besoin d'aide pour la création d'une macro

Ci-joint un essai avec limitation aux dates valides. Malheureusement, la mise en place des boutons réduit les possibilités par rapport à une validation classique (pas d'accès à la formule DECALER qui aurait carrément retiré de la liste les entrées invalides) ce qui fait qu'on peu faire bugger en cliquant sur les jours "blancs". mais bon, plus de 29 février, sauf pour les années bissextiles.

Mmm, si ton formulaire appelle 3 ou 4 cellules dates différentes, je pense que c'est un mauvais plan. (multiplication des plages nommées, et de pas mal d'autres cellules de fonctionnement). Les dates sont-elles les mêmes ou peuvent-elles être différentes?

Dans le cas de différentes, je pense que l'userform de Si... est déjà une bonne base.




Pour l'ajustement de hauteur, essayes avec
Code:
        If Not (Intersect(Target, Range("B38,B42,B49,B53,B57,B69,B77,B87")) Is Nothing) Then
            Set cel = Target
            On Error GoTo GestionErreur 'Evite le cas de l'utilisation de la touche suppr (fait planter)
            If cel <> "" Then
            Set m = cel.MergeArea
            m.UnMerge
            m.WrapText = True 'renvoie à la ligne
            m.HorizontalAlignment = xlCenterAcrossSelection
            m.Rows.AutoFit
            m.Merge
            m.HorizontalAlignment = xlGeneral 'facultatif bien sûr
            End If
        End If
GestionErreur:
End Sub
 

Pièces jointes

  • Formulaire Test.xlsm
    29.8 KB · Affichages: 77
  • Formulaire Test.xlsm
    29.8 KB · Affichages: 81
  • Formulaire Test.xlsm
    29.8 KB · Affichages: 79
Dernière édition:

villette54

XLDnaute Junior
Re : [VBA] Besoin d'aide pour la création d'une macro

Tirou,

La gestion des dates comme ça est bien. (Mais je ne comprend pas trop comment fonctionne les menus déroulants)
Je ne vais pas compliquer la tâche les 2 autres cases où une date est envisageable sont des dates différentes mais ne seront utilisés que dans 1 cas sur 10 au mieux.

Pour ce qui est de la hauteur de ligne, la modification que tu as apporté au code à résolu mon problème !

Merci !
 

villette54

XLDnaute Junior
Re : [VBA] Besoin d'aide pour la création d'une macro

Huum.

J'ai crié victoire trop vite, pour la hauteur des cellules...
En fait ma cellule B77 par exemple (valable pour toutes les autres) est fusionnée est de B à F. Mais le calcul de la hauteur en fonction du nombre de retour à la ligne ne se fait que sur la largeur de la colonne B et non de la plage B à F. Du coup si on tape un mot ça va, ça s'ajuste bien mais si on commence à taper un texte assez long on a une haute disproportionnée !

J'espère que j'ai été clair, c'est pas facile à expliquer.
 

Si...

XLDnaute Barbatruc
Re : [VBA] Besoin d'aide pour la création d'une macro

salut

pour mon premier fichier, sans doute un problème de références.
Références.jpg

pour le second fichier (totalement différent), j'ai inclus le calendrier du premier et j'ai changé la présentation (lignes cachées ou pas,cellules changées ou pas) avec ce que j'ai compris :confused:.

Comme le dit Tirou ;), une exemple précis est nécessaire Si... on ne veut pas errer de fil en fil.
 

Pièces jointes

  • Références.jpg
    Références.jpg
    117.2 KB · Affichages: 148
  • Références.jpg
    Références.jpg
    117.2 KB · Affichages: 148
  • Feuille de Déclaration.xlsm
    40.1 KB · Affichages: 78

villette54

XLDnaute Junior
Re : [VBA] Besoin d'aide pour la création d'une macro

Re,

Tirou, voici une version un peu plus aboutie de mon fichier (désolé si mon code VBA est dégueulasse)
Essaye d'écrire dans toutes les "grandes cellules" (celles fusionnées de B à F) et regarde comment s'ajuste la hauteur.

Si..., je jette un oeil a mes références et je te retiens au courant.


PS : J'ai l'impressions qu'on me fait activer toutes les références/bibliothèques 1 par 1. N'est-il pas plus simple de toutes les cocher une fois pour toute ?

EDIT : mon fichier dépasse la taille maximale autorisée par le forum, voici donc le lien pour le télécharger : http://cjoint.com/?3IkqNeE5A8B
 
Dernière édition:

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
314 628
Messages
2 111 337
Membres
111 105
dernier inscrit
Joffrette