Récupération d'un fichier automatique

Bonjour,

Je dois revoir un ancien fichier qui permets de générer des abaques (gicleurs de tête)

Une fois les abaques générés, un outil de conversion permets d'obtenir des Ø de pièces après avoir indiqué des hauteurs relevés (2ème onglet)
Aujourd'hui, le fichier fonctionne avec les anciens onglets (ex: Gicleur A30 et les autres onglets non colorés)
J'ai intégré 5 onglets (orange) un peu plus moderne que je souhaiterai qu'il se génère tout seul comme les anciens

Je pense que cela a été créé en Visual Basic mais j'ai aucune connaissance.
Sauf erreur de ma part, je pense que de pouvoir le faire sur un seul onglet orange devrait être suffisant, je crois que le copier/coller fonctionne

Pouvez-vous m'aider à réaliser ce fichier, svp ?

Bonjour

Hum pas simple de récupérer un fichier comme cela
Il y a un code Main dans le module, comment vous vous servez de ce code ?

De ce que je vois, vous complétez les données dans l'USF, puis vous cliquez sur le bouton Générer sur votre USF.
Cela met le tableau à jour et le graphique à jour directement

Dans votre fichier vous devez avoir des indications en colonne B, E et F en regarde des informations mises sur fond blanc

Peut être expliquer comment vous fonctionnez avec le fichier

Bonjour,

Suite aux problèmes rencontré, j'ai choisi de repartir d'un fichier vierge que vous trouverez en pièce-jointe.

Explications de ce fichier :

J'ai intégré 5 onglets de couleurs Orange qui reprends des valeurs récupérer sur un instrument de mesure. Ces 5 onglets représente 5 têtes de gicleur mais d'autres Onglets s'ajouteront à la suite

Dans mon onglet "Générateur", je choisi dans ma liste déroulante le gicleur choisi. Ce dernier reprend au automatique mes valeurs importantes de l'onglet orange correspondant. Dans mon fichier, j'ai uniquement mes 3 lignes (orange) de l'onglet X3.08

Comment est-il possible d'obtenir automatiquement les valeurs importantes (colonnes H à K) selon la tête de gicleur choisi dans ma liste déroulante sachant que je peux avoir plus de 3 lignes orange (ex : 11 lignes pour le gicleur I.26) ?

Vous remerciant par avance de votre retour

Cordialement

Bonjour

Comment est-il possible d'obtenir automatiquement les valeurs importantes (colonnes H à K) selon la tête de gicleur choisi dans ma liste déroulante sachant que je peux avoir plus de 3 lignes orange (ex : 11 lignes pour le gicleur I.26) ?

On peut faire un code VBA qui va aller chercher les infos selon le choix de votre cellule B3 dans la feuille Générateur
Conditions : il faut être sûr de votre coté que la couleur orange et/ou le fond blanc sera toujours identique

Pour les formules en J et K, pourquoi ne les mettez vous pas aussi dans la feuille générateur et devez-vous voir les formules ou simplement les chiffres

Crdlt

Edit : voici ce que vous pouvez faire dans votre fichier

1. Feuille Générateur
- click droite sur le nom de l'onglet
- choisir "Visualiser le code"
- dans la fenêtre, collez le code ci-dessous

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B3")) Is Nothing Then
    recupere Target
End If
End Sub

2. Allez dans l'éditeur VBA
- insérer un module
- coller le code ci-dessous

Sub recupere(Target As Range)
Dim ws As Worksheet
Dim i As Byte, j As Byte

With Worksheets("Générateur")
    Set ws = Sheets(.Range("B3").Value)
    .Range("H6:K100").ClearContents
    j = 6
    i = 8
    Do Until ws.Range("C" & i) = ""
        If ws.Range("C" & i).Font.Color = RGB(235, 96, 17) Then 'couleur Orange
            .Range("H" & j) = ws.Range("C" & i).Value
            .Range("I" & j) = ws.Range("D" & i).Value
            If j > 6 Then
                .Range("J" & j - 1) = (.Range("I" & j) - .Range("I" & j - 1)) / (.Range("H" & j) - .Range("H" & j - 1))
            End If
            .Range("K" & j).FormulaR1C1 = "=RC[-2]-RC[-1]*RC[-3]"
            j = j + 1
        End If
        i = i + 1
    Loop
    .Range("J" & j - 1) = .Range("J" & j - 2)
End With
End Sub

Attention que comme je vous l'ai précisé le code fonctionnera si la couleur de police est strictement identique à l'orange que vous avez choisi
Le contrôle de couleur se fait sur la ligne if ...... = RGB

Crdlr

Bonjour Dan,

J'ai aucune connaissance en VBA / Macro mais j'ai suivi à la lettre vos informations et le résultat est très concluant.
J'ai intégré de nouveaux onglets et ça fonctionne également.

Par contre, à l'enregistrement, j'ai l'indication suivante :

projet vb

J'ai testé NON et le fichier n'était plus utilisable

J'ai peur que les autres utilisateurs fassent une erreur à l'enregistrement.

Avez-vous une méthode afin de faire disparaître ceci ?

Pour ce qui est des couleurs, ça sera systématiquement cet orange, c'est la couleur exacte du logo de l'entreprise (chartre / code couleur)

Une autre info,

Si je supprime un onglet orange et donc je supprime la ligne concernée dans l'onglet "données", j'ai dans ma liste déroulante la possibilité de choisir " " ce qui me fait apparaître ce message d'erreur.

projet vb 2

Est-il possible de ne pas avoir ce cas de figure ?

Merci Dan.
Cordialement

re,

Par contre, à l'enregistrement, j'ai l'indication suivante :
....
Avez-vous une méthode afin de faire disparaître ceci ?

Oui c'est normal, une fois que vous avez placé les codes vous devez enregistrer votre fichier au format XLSM pour que les macros soient actives et ne plus avoir ce message.

J'ai testé NON et le fichier n'était plus utilisable

Non du tout. C'est que vous avez enregistré avec le format XLSX ou XLS.

Suivanr le message, si vous choisissez OUI, Excel supprime les codes et laisse le format XLS ou XLSX comme extension à votre fichier. Cette option est donc interdite pour vous
Donc cliquez sur NON (si vous avez ce message). Excel va vous ré-afficher la fenêtre d'enregistrement. Ensuite, enregistrez le fichier en prenant soin de choisir le format XLSM dans la rubrique "Type"

Pour ce qui est des couleurs, ça sera systématiquement cet orange, c'est la couleur exacte du logo de l'entreprise (chartre / code couleur)

Ok. Comme précisé avant la couleur est définie dans la ligne RGB. Si un jour vous changez la couleur, il faudra donc adapter ces trois chiffres en fonction.
Si vous avez toutefois un souci à l'utilisation, n'hésitez pas à revenir vers moi.

Crdlt

Merci Dan,

Entre temps j'avais trouvé l'enregistrement en XLSM.

Par contre, j'ai complété mon paragraphe par une autre interrogation

Cordialement

Une autre info,
Si je supprime un onglet orange et donc je supprime la ligne concernée dans l'onglet "données", j'ai dans ma liste déroulante la possibilité de choisir " " ce qui me fait apparaître ce message d'erreur.

Ok là vous devez modifiez comme ceci

- Dans la feuille DONNEES supprimez la cellule B3 pour ne pas avoir de cellule vide entre le titre DONNEES et la liste des gicleurs
- Positionnez-vous sur la cellule B3 de la feuille Generateur
- Allez dans la liste de validation
- Dans Source, remplacez la formule par celle-ci --> =DECALER(Données!$B$3;;;NBVAL(Données!$B:$B)-1)

Lorsque vous ajouterez ou supprimerez des données la liste de validation sera adaptée automatiquement

Crdlt

Impeccable, ça fonctionne

Bon ... Nouvelle demande, je profite de votre réactivité

J'ai souhaité protégé chaque feuille en déverrouillant uniquement la cellule B3 et de C6 à C115

Par contre, j'ai cette information, je pense qu'il ne peux pas effectuer le codage/macro sur une feuille protégée (je veux pas de mot de passe)

projet vb 3

De plus, nous devons indiquer des valeurs de C6 à C115 et effectuer un copier/coller des résultats obtenus entre D6 et D115, hors, il copie uniquement la formule, je souhaite que les valeurs.

Merci de nouveau Dan

Par contre, j'ai cette information, je pense qu'il ne peux pas effectuer le codage/macro sur une feuille protégée (je veux pas de mot de passe)

Si vous avez cette info, c'est que votre feuille est protégée par un mot de passe à blanc ou non

Faite ceci dans le code

1. Juste en dessous de la ligne With Worksheets("Générateur"), ajoutez ceci

.Unprotect

2. En bas du code juste au dessus du END WITH, ajoutez ceci

.Protect

De plus, nous devons indiquer des valeurs de C6 à C115 et effectuer un copier/coller des résultats obtenus entre D6 et D115, hors, il copie uniquement la formule, je souhaite que les valeurs.

NB : Votre feuille Générateur va jusque la ligne 105...en colonne A et pas 115
Je n'ai pas compris car la colonne D contient une formule. Idem pour la colonne E d'ailleurs

1ère astuce : OK !

Concernant le second point,

C'est effectivement jusqu' 105, désolé.

Nous devons copier l'ensemble des valeurs indiquées dans la colonne D mais lorsque nous faisons un copier/coller de ces valeur pour les intégrer dans un autre tableau, ce sont les formules qui sont copier

Copier puis coller les valeurs ///

Nous devons copier l'ensemble des valeurs indiquées dans la colonne D mais lorsque nous faisons un copier/coller de ces valeur pour les intégrer dans un autre tableau, ce sont les formules qui sont copier

Vous devez faire un copier -> "Collage spécial" et choisir l'option "Valeurs"

Autre point : dans le code, je suppose que si vous changez de gicleurs en B3, cela doit effacer les valeurs en colonne C ou c'est l'opérateur qui le fera manuellement ?

Si on peux le faire automatiquement ça serait un plus, sinon, oui c'est manuellement

Si on peux le faire automatiquement ça serait un plus, sinon, oui c'est manuellement

- Allez dans le module.
- Juste avant le i = 6, remplacez tout le début du code par ceci

Sub recupere(Target As Range)
Dim ws As Worksheet
Dim i As Byte, j As Byte, dlg As Byte

With Worksheets("Générateur")
    .Unprotect
    Set ws = Sheets(.Range("B3").Value)
    dlg = .Range("B" & Rows.Count).End(xlUp).Row
    .Range("H6:K" & dlg).ClearContents
    .Range("C6:C" & dlg).ClearContents

Merci de votre retour sur les changements que je vous ai proposés avant. Est-ce ok ou pas ?

Bonjour, meilleurs vœux et un grand merci pour votre aide.

Il est fort possible que nous échangions de nouveau, en effet, j'ai un nouveau projet Excel à mettre en place.

Cordialement

Rechercher des sujets similaires à "recuperation fichier automatique"