OLE Indépendant [Résolu]

Signaler
Messages postés
36
Date d'inscription
dimanche 5 avril 2009
Statut
Membre
Dernière intervention
10 août 2011
-
Messages postés
36
Date d'inscription
dimanche 5 avril 2009
Statut
Membre
Dernière intervention
10 août 2011
-
Bonjour à tous !

Je suis sous Access 07

J'ai créé une table pour la gestion de la réservation d'une salle. Elle possède 14 champs, un pour la date, le reste pour les heures de la journée (8h-9h etc ...).

J'ai créé un formulaire principal avec différents onglets, l'un d'eux étant l'affichage des réservations faites pour cette salle. Il s'agit d'un objet indépendant, un fichier excel (non relié à un fichier extérieur). Je sais comment manipuler les données pour pouvoir insérer ses dernières dans mon worksheet, cependant, j'ai une petite question avant : j'ai vu qu'il y avait une propriété "Contenu" pour l'objet indépendant, pouvant prendre une requête ! Je me suis dit "Ô joie, je vais pouvoir réaliser cela simplement" ! Que nenni ! Quelqu'un sait il comment s'en servir ?

Après moult recherches sur internet, je n'ai hélas pas trouvé le moindre indice pouvant éclairer la faible lueur de mon esprit (ouais, c'est lundi ... qui plus est un lendemain de Bayonne)

Je me suis alors dit que j'allais faire sans, et j'ai donc réalisé une rapide requête qui récupère les réservations de la semaine en cours (du lundi au vendredi). Or, lorsque je fait ma requête (un très joli SELECT blablabla), celle ci pose encore soucis ! Lorsque je l’exécute, aucun problème ! Je vois mon affichage toussa. Or, lorsque dans mon code vba, je fais un string "SELECT * FROM maRequete" , puis un set recordset DB.openRecordset(string), voilà que mon problème se pose ! La requête semble ne plus vouloir prendre en main les dates de mon formulaire ! Du coup, soit pas d'enregistrement (parce que j'ai essayé de récupérer directement depuis ma table), soit un problème par rapport à un manque d'arguments (il semblerait que la requête ne parvienne pas à trouver les dates que je lui dis de chercher) ...

Bref, y-a-il une âme errant par ici pour m'aider en ce rude lundi matin ... ? Merci d'avance ^^


___________________________________________________________________________
|L'avantage d'être intelligent, c'est que l'on peut paraître con. Alors | |que l'inverse est impossible ... |
_________________________

8 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
parce que ce sont des propriétés d'objet et non des variables "calculées" ou "générées" !

____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
Bonjour,
Bayonne (que j'ai subi comme toi) ou non, il n'y a aucune raison pour déraisonner.
Si tu as deux objets distincts, l'un dans une appli et l'autre dans l'autre, tu ne peux te référer, depuis une appli à l'objet de l'autre appli sans dire qu'il est dans l'autre appli.
Tu n'as par ailleurs pas l'obkigation d'ouvrir un objet OLE ! Les exemples de "pilotage" ne manquent pas sur ce forum et te montrent comment, depuis une appli Office A, pointer à la demande sur une appli Office B.

____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
Messages postés
36
Date d'inscription
dimanche 5 avril 2009
Statut
Membre
Dernière intervention
10 août 2011

Je n'ai pas deux applis distincts ! Je travail uniquement sous access, en ce qui concerne mon code vba, même chose !

J'ai déjà utilisée de plusieurs manières dans d'autres projets l'interopérabilité entre ACCESS et EXCEL, mais là je ne souhaite pas faire d'extraction de données, simplement utiliser un objet OLE indépendant, afin de réaliser un affichage qui soit agréable à regarder, sans faire de sous formulaire, et sans devoir ouvrir excel tous les 4 matins.

Voici pour info mon code ... Je l'ai placé sur le click pour l'instant, mais à terme je le placerai sur un autre évènement

    Dim db As Database
    Dim Accueil As String
    Dim salleA As Recordset
    Dim salleAccueil As Excel.Worksheet

    Set db = CurrentDb
    
    '---------------------------------------------------------------------------------------------

    Accueil = "SELECT * FROM tbl_Accueil WHERE dateAccueil >=#" & dateAccueilDebut & "#"
    Accueil = Accueil & " And dateAccueil <=#" & dateAccueilFin & "# ORDER BY dateAccueil;"

    Set salleA = db.OpenRecordset(Accueil)
    Set salleAccueil = planningSalleExt.Object.Sheets(1)
    
    salleA.MoveFirst
    
    '---------------------------------------------------------------------------------------------
    'On entre ensuite dans l'objet indépendant, les informations de la table
    While Not salleA.EOF
    
        'Pour chaque heure, on vérifie met la valeur de la requête, puis on vérifie que ce n'est pas vide, pour la mise en forme
        salleAccueil.Range("B" & Weekday(salleA.Fields("dateAccueil"))).Value = salleA.Fields("8h-9h")
        If Not (IsNull(salleA.Fields("8h-9h"))) Then
            salleAccueil.Range("B" & Weekday(salleA.Fields("dateAccueil"))).Font.Color = salleAccueil.Range("J8").Cells.Font.Color
            salleAccueil.Range("B" & Weekday(salleA.Fields("dateAccueil"))).Font.Size = salleAccueil.Range("J8").Cells.Font.Size
            salleAccueil.Range("B" & Weekday(salleA.Fields("dateAccueil"))).Interio.Color = salleAccueil.Range("J8").Interior.Color
        End If
        
        salleAccueil.Range("C" & Weekday(salleA.Fields("dateAccueil"))).Value = salleA.Fields("9h-10h")
        If Not (IsNull(salleA.Fields("9h-10h"))) Then
            salleAccueil.Range("C" & Weekday(salleA.Fields("dateAccueil"))).Font.Color = salleAccueil.Range("J8").Cells.Font.Color
            salleAccueil.Range("C" & Weekday(salleA.Fields("dateAccueil"))).Font.Size = salleAccueil.Range("J8").Cells.Font.Size
            salleAccueil.Range("C" & Weekday(salleA.Fields("dateAccueil"))).Interio.Color = salleAccueil.Range("J8").Interior.Color
        End If
        
        salleAccueil.Range("D" & Weekday(salleA.Fields("dateAccueil"))).Value = salleA.Fields("10h-11h")
        If Not (IsNull(salleA.Fields("10h-11h"))) Then
            salleAccueil.Range("D" & Weekday(salleA.Fields("dateAccueil"))).Font.Color = salleAccueil.Range("J8").Cells.Font.Color
            salleAccueil.Range("D" & Weekday(salleA.Fields("dateAccueil"))).Font.Size = salleAccueil.Range("J8").Cells.Font.Size
            salleAccueil.Range("D" & Weekday(salleA.Fields("dateAccueil"))).Interio.Color = salleAccueil.Range("J8").Interior.Color
        End If
        
        salleAccueil.Range("E" & Weekday(salleA.Fields("dateAccueil"))).Value = salleA.Fields("11h-12h")
        If Not (IsNull(salleA.Fields("11h-12h"))) Then
            salleAccueil.Range("E" & Weekday(salleA.Fields("dateAccueil"))).Font.Color = salleAccueil.Range("J8").Cells.Font.Color
            salleAccueil.Range("E" & Weekday(salleA.Fields("dateAccueil"))).Font.Size = salleAccueil.Range("J8").Cells.Font.Size
            salleAccueil.Range("E" & Weekday(salleA.Fields("dateAccueil"))).Interio.Color = salleAccueil.Range("J8").Interior.Color
        End If
        
        salleAccueil.Range("F" & Weekday(salleA.Fields("dateAccueil"))).Value = salleA.Fields("12h-13h")
        If Not (IsNull(salleA.Fields("12h-13h"))) Then
            salleAccueil.Range("F" & Weekday(salleA.Fields("dateAccueil"))).Font.Color = salleAccueil.Range("J8").Cells.Font.Color
            salleAccueil.Range("F" & Weekday(salleA.Fields("dateAccueil"))).Font.Size = salleAccueil.Range("J8").Cells.Font.Size
            salleAccueil.Range("F" & Weekday(salleA.Fields("dateAccueil"))).Interio.Color = salleAccueil.Range("J8").Interior.Color
        End If
        
        salleAccueil.Range("G" & Weekday(salleA.Fields("dateAccueil"))).Value = salleA.Fields("13h-14h")
        If Not (IsNull(salleA.Fields("13h-14h"))) Then
            salleAccueil.Range("G" & Weekday(salleA.Fields("dateAccueil"))).Font.Color = salleAccueil.Range("J8").Cells.Font.Color
            salleAccueil.Range("G" & Weekday(salleA.Fields("dateAccueil"))).Font.Size = salleAccueil.Range("J8").Cells.Font.Size
            salleAccueil.Range("G" & Weekday(salleA.Fields("dateAccueil"))).Interio.Color = salleAccueil.Range("J8").Interior.Color
        End If
        
        salleAccueil.Range("H" & Weekday(salleA.Fields("dateAccueil"))).Value = salleA.Fields("14h-15h")
        If Not (IsNull(salleA.Fields("14h-15h"))) Then
            salleAccueil.Range("H" & Weekday(salleA.Fields("dateAccueil"))).Font.Color = salleAccueil.Range("J8").Cells.Font.Color
            salleAccueil.Range("H" & Weekday(salleA.Fields("dateAccueil"))).Font.Size = salleAccueil.Range("J8").Cells.Font.Size
            salleAccueil.Range("H" & Weekday(salleA.Fields("dateAccueil"))).Interio.Color = salleAccueil.Range("J8").Interior.Color
        End If
        
        salleAccueil.Range("I" & Weekday(salleA.Fields("dateAccueil"))).Value = salleA.Fields("15h-16h")
        If Not (IsNull(salleA.Fields("15h-16h"))) Then
            salleAccueil.Range("I" & Weekday(salleA.Fields("dateAccueil"))).Font.Color = salleAccueil.Range("J8").Cells.Font.Color
            salleAccueil.Range("I" & Weekday(salleA.Fields("dateAccueil"))).Font.Size = salleAccueil.Range("J8").Cells.Font.Size
            salleAccueil.Range("I" & Weekday(salleA.Fields("dateAccueil"))).Interio.Color = salleAccueil.Range("J8").Interior.Color
        End If
        
        salleAccueil.Range("J" & Weekday(salleA.Fields("dateAccueil"))).Value = salleA.Fields("16h-17h")
        If Not (IsNull(salleA.Fields("16h-17h"))) Then
            salleAccueil.Range("J" & Weekday(salleA.Fields("dateAccueil"))).Font.Color = salleAccueil.Range("J8").Cells.Font.Color
            salleAccueil.Range("J" & Weekday(salleA.Fields("dateAccueil"))).Font.Size = salleAccueil.Range("J8").Cells.Font.Size
            salleAccueil.Range("J" & Weekday(salleA.Fields("dateAccueil"))).Interio.Color = salleAccueil.Range("J8").Interior.Color
        End If
        
        salleAccueil.Range("K" & Weekday(salleA.Fields("dateAccueil"))).Value = salleA.Fields("17h-18h")
        If Not (IsNull(salleA.Fields("17h-18h"))) Then
            salleAccueil.Range("K" & Weekday(salleA.Fields("dateAccueil"))).Font.Color = salleAccueil.Range("J8").Cells.Font.Color
            salleAccueil.Range("K" & Weekday(salleA.Fields("dateAccueil"))).Font.Size = salleAccueil.Range("J8").Cells.Font.Size
            salleAccueil.Range("K" & Weekday(salleA.Fields("dateAccueil"))).Interio.Color = salleAccueil.Range("J8").Interior.Color
        End If
        
        salleAccueil.Range("L" & Weekday(salleA.Fields("dateAccueil"))).Value = salleA.Fields("18h-19h")
        If Not (IsNull(salleA.Fields("18h-19h"))) Then
            salleAccueil.Range("L" & Weekday(salleA.Fields("dateAccueil"))).Font.Color = salleAccueil.Range("J8").Cells.Font.Color
            salleAccueil.Range("L" & Weekday(salleA.Fields("dateAccueil"))).Font.Size = salleAccueil.Range("J8").Cells.Font.Size
            salleAccueil.Range("L" & Weekday(salleA.Fields("dateAccueil"))).Interio.Color = salleAccueil.Range("J8").Interior.Color
        End If
        
        salleAccueil.Range("M" & Weekday(salleA.Fields("dateAccueil"))).Value = salleA.Fields("19h-20h")
        If Not (IsNull(salleA.Fields("19h-20h"))) Then
            salleAccueil.Range("M" & Weekday(salleA.Fields("dateAccueil"))).Font.Color = salleAccueil.Range("J8").Cells.Font.Color
            salleAccueil.Range("M" & Weekday(salleA.Fields("dateAccueil"))).Font.Size = salleAccueil.Range("J8").Cells.Font.Size
            salleAccueil.Range("M" & Weekday(salleA.Fields("dateAccueil"))).Interio.Color = salleAccueil.Range("J8").Interior.Color
        End If
        
        salleAccueil.Range("N" & Weekday(salleA.Fields("dateAccueil"))).Value = salleA.Fields("20h-21h")
        If Not (IsNull(salleA.Fields("20h-21h"))) Then
            salleAccueil.Range("N" & Weekday(salleA.Fields("dateAccueil"))).Font.Color = salleAccueil.Range("J8").Cells.Font.Color
            salleAccueil.Range("N" & Weekday(salleA.Fields("dateAccueil"))).Font.Size = salleAccueil.Range("J8").Cells.Font.Size
            salleAccueil.Range("N" & Weekday(salleA.Fields("dateAccueil"))).Interio.Color = salleAccueil.Range("J8").Interior.Color
        End If
    
        salleA.MoveNext
        
    Wend
    
    salleA.Requery
    
    Set salleA = Nothing
    Set salleAccueil = Nothing



___________________________________________________________________________
L'avantage d'être intelligent, c'est que l'on peut paraître con. Alors que l'inverse est impossible ...
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
Tu as bien, contrairement à ce que tu penses, DEUX applications distinctes (je ne parle pas de TON application) ===>> Application Access + Application Excel !


____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
Messages postés
36
Date d'inscription
dimanche 5 avril 2009
Statut
Membre
Dernière intervention
10 août 2011

Tout cela ne m'explique quand même pas pourquoi ma requête plante dans le code et pas dans la requête, ni l'utilisation de la propriété "Contenu" de l'OLE indépendant ... x)

___________________________________________________________________________
|L'avantage d'être intelligent, c'est que l'on peut paraître con. Alors | |que l'inverse est impossible ... |
_________________________
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
Tout cela ne m'explique quand même pas pourquoi ma requête plante dans le code et pas dans la requête, ni l'utilisation de la propriété "Contenu" de l'OLE indépendant ... x)

Tout simplement parce que l'insertion d'un objet OLE ne le transforme pas en objet utilisable en "OLE automation". Et tu n'as donc pas simplement accès à la valeur de ses variables.
____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
Messages postés
36
Date d'inscription
dimanche 5 avril 2009
Statut
Membre
Dernière intervention
10 août 2011

Pourquoi est ce que ce code fonctionne alors ?

salleAccueil.Range("B2").Font.Color = salleAccueil.Range("J8").Cells.Font.Color
    salleAccueil.Range("B2").Font.Size = salleAccueil.Range("J8").Cells.Font.Size
    salleAccueil.Range("B2").Interior.Color = salleAccueil.Range("J8").Interior.Color
    salleAccueil.Range("B2").Value = "Test"





___________________________________________________________________________
|L'avantage d'être intelligent, c'est que l'on peut paraître con. Alors | |que l'inverse est impossible ... |
_________________________
Messages postés
36
Date d'inscription
dimanche 5 avril 2009
Statut
Membre
Dernière intervention
10 août 2011

Donc pour résumer, mettre un OLE Excel indépendant dans formulaire n'est absolument pas modifiable avec des requêtes ? Il peut être simplement utilisé à titre informatif ?

___________________________________________________________________________
|L'avantage d'être intelligent, c'est que l'on peut paraître con. Alors | |que l'inverse est impossible ... |
_________________________