Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1428 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [HELP] VBA sur Excel

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[HELP] VBA sur Excel

n°2169561
Leodarth
Posté le 02-01-2013 à 12:26:08  profilanswer
 

Bonjour à tous,
 
Je suis étudiant à l'université et j'ai un sacré problème...
 
Pour notre cours d'informatique, nous devons faire une base de données via Access, puis la transférer vers Excel... Avec, évidemment, beaucoup de consignes... Nous sommes parvenus à tout faire excepté nos traitements VBA... On ne parvient pas à les faire fonctionner :( Nous devons rendre notre travail demain ainsi que notre rapport pour 16H au plus tard... Nous sommes vraiment mal barré et je fais donc un appel au secours en espérant qu'une âme charitable pourra nous aider...
Les codes sont déjà fait mais ça foire quand on les exécute....
 
Je vous en supplie... Quelqu'un pourrait-il nous consacrer un tout petit peu de son temps pour vérifier et corriger nos code ?
 
Je vous remercie d'avance....
leodarth

mood
Publicité
Posté le 02-01-2013 à 12:26:08  profilanswer
 

n°2169575
Leodarth
Posté le 02-01-2013 à 13:59:14  profilanswer
 

SVP aidez-nous  :(

n°2169584
rufo
Pas me confondre avec Lycos!
Posté le 02-01-2013 à 14:24:37  profilanswer
 

Faudrait déjà commencer par expliquer ce qui ne marche pas dans le VBA? Déjà, quels sont ces traitements VBA dont tu parles. Ensuite, quels msg d'erreur ou bug constatés?
 
Question annexe : quelle méthode pour transférer les données de la BD Access vers Excel? ODBC depuis Excel, SQL+VBA depuis Access, extract en CSV depuis Access + traitement du CSV via VBA depuis Excel, autre ?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2169593
Leodarth
Posté le 02-01-2013 à 15:05:21  profilanswer
 

Je te MP

n°2169605
rufo
Pas me confondre avec Lycos!
Posté le 02-01-2013 à 15:36:52  profilanswer
 

Mieux vaudrait mettre les données sur ce topic, plus de gens pourront t'aider. J'ai vu ton msg en MP :  non, je ne veux pas que tu m'envoies les fichiers et que je me dépatouille seul (déjà parce que j'ai pas Access). Si ce n'est pas toi qui a fait le code, demandes à tes copains qui l'ont pondu de venir ici expliquer ce qui ne marche pas. Ce n'est pas à nous de deviner. :o
 
Du reste, pourquoi est-ce toi qui ouvre ce topic qui semble important pour ton groupe si tu n'es pas en mesure d'exposer les pbs techniques :??: Tu as dû pourtant contribuer à ce projet, non?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2169610
Leodarth
Posté le 02-01-2013 à 15:45:44  profilanswer
 

Tout simplement car ils ne sont pas en "état" de le faire... Je vais transmettre des Screenshots

n°2169616
Leodarth
Posté le 02-01-2013 à 15:55:37  profilanswer
 

http://img203.imageshack.us/img203/7821/excelh.png
Voici la fiche qui bug...  
IOn a actuellement un tableau excel plein de données issues d'Access (donc surtout ne pas changer ces données) sinon les deux programmes ne corresponderaient plus.  
 
On a du, pour excel, faire des traitements statistiques (faits) et des représentation graphiques (fait aussi)
 
Il ne nous reste plus qu'à, via des Macros (en excell c'est donc simplement un moyen pour faire des programmes automatiques, pas hyper compliqués je pense.)  J'en ai deja réalisé deux assez semblables, qui présentent un petit defaut c'est que je n'arrive pas à faire demarrer les "ordres" par defaut de la bonne case pour rendre le remplissage des cases semi automatique correct quel que soit la "Active Cell" au momenrt de lancer la macro (et de pousser sur le bouton donc, car on relie chaque programmation VBA (macro) à un bouton) (Tres simple à faire) J'ai commencé un programme dans lequel je voulais faire que toutes les donnees au dessus d'un chiffre (la moyenne dans  notre cas) se mettent en une couleur et tout celles en dessous de la colonne total de la feuille "Fiches d'entretien" en une autre colonne
 
Voici les codes qu'on a utilisé pour ce faire :
Sub Total_Entretien()
 
Dim rng_total As Range
Dim compteur As Integer
 
Set rng_total = Sheets("Fiches_d'entretien" ).Range("rng_Total" )
 
compteur = 1
 
'La boucle commence ici
For Each valeir_total In rng_total
    If valeur_total < 500 Then
        Sheets("Fiches_d'entretien" ).Cells(compteur, 13).Value = "Petite réparation"
    Else
        Sheets("Fiches_d'entretien" ).Cells(compteur, 13).Value = "Grosse Réparatoin"
    End If
    compteur = compteur + 1
'On termine finit la boucle
Next
         
End Sub
Sub Somme_si_Couleurs()
 
'déclaration
 
Dim rng_total As Range
Dim compteur As Integer
Dim moyenne_compteur As Integer
Dim somme_total As Variant
Dim Moyenne_total As Variant
 
'Initialisation
 
Set rng_total = Sheets("Fiches_d'entretien" ).Range("rng_Total" )
 
compteur = 1
moyenne_compteur = 0
somme_total = 0
 
'On calcule la moyenne des la colonne Total
 
For Each valeur_total In rng_total
    moyenne_compteur = moyenne_compteur + 1
    somme_total = somme_total + valeur_solde
Next
 
Moyenne_total = somme_total / (moyenne_compteur)
 
'On donne une couleur aux cases
 
For Each valeur_total In rng_total
    If valeur_total < Moyenne_total Then
        Sheets("Fiches_d'entretien" ).Cells(compteur, 12).Font.ColorIndex = 20
    Else
        Sheets("Fiches_d'entretien" ).Cells(compteur, 12).Font.ColorIndex = 30
    End If
     
    compteur = compteur + 1
 
Next
 
 
End Sub
 
 
Et mon module (qui ne marche pas) :
Sub Macro1()
 
' Macro1 Macro
 
    Range("L2,L3,L5,L7,L6,L8,L9,L10,L1," ).Select
    Range("L2" ).Activate
    With Selection.Font
        .Color = -11489280
        .TintAndShade = 0
    End With
    With Selection.Font
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
    End With
    With Selection.Interior
        .Pattern = xlNone
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 5287936
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    Range("G38" ).Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 5287936
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    Range("L4,L11,L14,L16,L21,G39" ).Select
    Range("L4" ).Activate
    With Selection.Interior
        .Pattern = xlNone
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 15773696
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    Range("G39" ).Select
End Sub
 
Sub entretien_inférieur_moyenne()
'
' Entretien inférieur à la moyenne
'
 
'
    Range("L2:L3" ).Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 15773696
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 15773696
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 15773696
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 15773696
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    Range("L5:L6:L8:L9:L10:L12:L13:L15:L17:L18:L19:L20" ).Select
    Range("G38" ).Activate
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 15773696
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 15773696
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 15773696
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 15773696
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 15773696
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
End Sub
Sub Entretien_suppérieur_moyenne()
'
' Entretien Suppérieur à la moyenne
'
 
'
    Range("L4" ).Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 5287936
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    Range("L7:L11:L14:L16:L21" ).Select
    Range("G39" ).Activate
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 5287936
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    Range("K29" ).Select
End Sub


Message édité par Leodarth le 02-01-2013 à 16:01:45
n°2169620
Leodarth
Posté le 02-01-2013 à 16:08:52  profilanswer
 

Pour le bouton "ajouter client" où l'ajout se fait automatiquement à la suite de notre tableau voici notre code :  
Sub ajouterclient()
 
 
ActiveCell.FormulaR1C1 = ActiveCell.Offset(-1, 0).Value + 1
ActiveCell.Offset(0, 1).Select
 
' Encode le nom de la personne
Nom = InputBox("Entrez le nom du nouveau client" )
ActiveCell.FormulaR1C1 = Nom
ActiveCell.Offset(0, 1).Select
 
' Encode le prénom de la personne
Prénom = InputBox("Entrez le prénom du client" )
ActiveCell.FormulaR1C1 = Prénom
ActiveCell.Offset(0, 1).Select
 
' Encode l'adresse
Adresse = InputBox("Entrez l'adresse du nouveau client" )
ActiveCell.FormulaR1C1 = Adresse
ActiveCell.Offset(0, 1).Select
 
' Encode le code postal
Codepostal = InputBox("Entrez le code postal du nouveau client (B-****)" )
ActiveCell.FormulaR1C1 = Codepostal
ActiveCell.Offset(0, 1).Select
 
' Encode la ville
Ville = InputBox("Entrez la ville du nouveau client" )
ActiveCell.FormulaR1C1 = Ville
ActiveCell.Offset(0, 1).Select
 
' Encode le sexe du client
Sexe = InputBox("Entrez le sexe du client (Homme/Femme)" )
ActiveCell.FormulaR1C1 = Sexe
ActiveCell.Offset(0, 1).Select
 
' Encode la date de naissance du client
Naissance = InputBox("Entrez la date de naissance du client (**/**/****)" )
ActiveCell.FormulaR1C1 = Naissance
ActiveCell.Offset(0, 1).Select
 
' Encode le Numéro de Fixe du client
Fixe = InputBox("Entrez le Numéro de téléphone fixe" )
ActiveCell.FormulaR1C1 = Fixe
ActiveCell.Offset(0, 1).Select
 
' Encode le Numéro du gsm du client
Gsm = InputBox("Entrez le Numéro de Gsm client" )
ActiveCell.FormulaR1C1 = Gsm
ActiveCell.Offset(0, 1).Select
 
' Encode le type de client
Typeclient = InputBox("Entrez le type de client (Particulier/Professionnel)" )
ActiveCell.FormulaR1C1 = Typeclient
ActiveCell.Offset(0, 1).Select
 
 
 
End Sub

n°2169638
boomy29
PSN: tintine29
Posté le 02-01-2013 à 17:55:04  profilanswer
 

1- Sheets("NomFeuille";).Cells(indexligne, indexcolonne).Select  
pour en faire ton activecell
 
2-je voulais faire que toutes les donnees au dessus d'un chiffre (la moyenne dans  notre cas) se mettent en une couleur
je conseille la mise en forme conditionnelle je vois le bouton sur ton screen
 
ensuite je pense qu'en 2 semaines de vacances il y avait le temps de faire qqchose car le 2 janvier on est pas productif  
 
et l’enregistreur de macro c'est pas génial pour un travail a rendre


Message édité par boomy29 le 02-01-2013 à 17:55:20
n°2169639
Leodarth
Posté le 02-01-2013 à 18:00:50  profilanswer
 

Malheureusement je ne suis pas en vacances mais en blocus... Je commence les examens le 7 :s

mood
Publicité
Posté le 02-01-2013 à 18:00:50  profilanswer
 

n°2169641
rufo
Pas me confondre avec Lycos!
Posté le 02-01-2013 à 18:04:33  profilanswer
 

Désolé, à mon boulot, on n'a pas accès à imageshack :(
 
C'est normal tous les With Selection.Interior qui se suivent avec le même code plusieurs fois :??:


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2169648
Leodarth
Posté le 02-01-2013 à 19:14:48  profilanswer
 

aucune idée.. si c'est bizarre peut-être que ce n'est pas normal :/

n°2169650
Leodarth
Posté le 02-01-2013 à 19:32:54  profilanswer
 

Merci boomy29.. Malheureusement, pour les couleurs c'est uniquement en VBA.
Et pour 1- Sheets("NomFeuille".Cells(indexligne, indexcolonne).Select  
pour en faire ton activecell ça bloque sur une seule cellule... Nous voudrions que toutes les rentrées que l'on fait s'enregistre à la suite
(ex: passer à la ligne 26 pour un client, passer à la ligne 27 pour un autre) et ce automatiquement :/

n°2169663
boomy29
PSN: tintine29
Posté le 02-01-2013 à 23:18:37  profilanswer
 

il faudrait faire un collection des cellules a mettre en couleur 1
et faire une boucle for sur cette collection  
et faire pareil pour la 2eme couleur  
 
mais je reste sur ma mise en forme conditionnelle car je vois pas l’intérêt d'utiliser une machine a écrire quand on a un ordinateur

n°2169681
rufo
Pas me confondre avec Lycos!
Posté le 03-01-2013 à 09:50:17  profilanswer
 

Plutôt que faire des .select ou .active, vaudrait mieux faire une boucle et à l'intérieur, un truc du genre :
With Application.Worksheets("NomOnglet" ).Cells(i, j)
   .Interior.Color = RGB(204, 255, 204)
   ...
End With
 
Au passage, vaudrait mieux utiliser RGB() pour les codes couleurs, c'est plus lisible, je pense que des codes genre 15773696 :/
 
Enfin, ça manque cruellement de commentaires pertinents. Parce que "La boucle commence ici", ça c'est du commentaire :grrr:
Par contre, d'expliquer la raison de l'enchaînement de tous ces blocs de mise en forme de cellules, ça, ça aiderait la compréhension, la preuve, t'es pas capable de m'expliquer leur raison d'être :/ T'as fait des trucs dans ce code, au moins?
 
Mon impression est que ce code n'est franchement pas de qualité : on sent qu'il n'y a pas eu beaucoup de réflexion sur sa structure et son algorithmie (pas d'appels de fonctions alors qu'il y a de grosses portions répétitives)...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [HELP] VBA sur Excel

 

Sujets relatifs
VBA (Excel 2010) Syntaxe Range[VBA]Comment traduire If A1=A2=.... Then
Problème incompatibilité type Excel VBA (Help, Stagiaire en détresse!)VBA excel macro conditionnelle HELP!!
[VBA][Excel] Help ! Problème avec graphiqueHELP : images EXCEL/VBA en enregistrant sous format HTML
VBA EXCEL HELPHelp : VBA : Gestion/Modification d'un Objet OLE Powerpoint dans Excel
VBA Excel - Help[VBA] Please help visual basic excel word...
Plus de sujets relatifs à : [HELP] VBA sur Excel


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR