Excel VBA - Problème condition

Bonjour,

je suis début en VBA sur Excel et j'aurai besoin de plusieurs informations sur un document que j'ai à réaliser en VBA / Macro / TcD.

tout d'abord, il faut comprendre ce qui est attendu de moi :

- Un manager doit extraire des données via le service intranet de mon entreprise;

le problème ? A chaque extraction de ce document, il doit supprimer plusieurs colonnes dont il ne se sert pas (le document est extrait toujours sous la même forme donc les colonnes supprimés sont initialement les mêmes),

pour ce premier problème j'ai pensé à le réaliser avec la fonction "enregistrer une macro" mais elle me parait peu sécurisée du fait qu'elle exécute simplement (un clic de trop est donc... de trop ).

ensuite : j'ai une colonne de satisfaction client :"Intervention", à réaliser en rapport avec une autre colonne :

une colonne composée de 1,2,3,4 ou 5 doit devenir dans un autre onglet :

Si : 1 , 2 , 3 : Non.

Si : 4 , 5 : Oui.

enfin, dans une colonne "PROJET" avec des numéros de projets se terminant toujours par 01 : j'aurai besoin de supprimer ces 2 derniers caractère de la colonne...

cela peut sembler assez long mais c'est une opération qui se fait très facilement manuellement mais j'aimerai pouvoir proposer une version automatisée de ce document, afin que le formatage de cet extraction se fasse automatiquement et rapidement.

Pour le formatage les colonnes à garder sont les suivantes :

Intervention Suggestions PROJET OFFRE RÉFÉRENCE_SIC CLIENT NOM_SITE

je préfère vous envoyer mon document avant pour que vous compreniez bien ce qu'il m'est demandé (certaines colonnes sont vides car je préfère ne pas faire apparaître trop d'informations),

aussi, j'aurai pu vous laisser mes anciens codes VBA, mais croyez-moi entre les macros "enregistrer une macro" et les début de code que j'ai pu obtenir sur internet, aucuns n'était bon.

je vous propose un modèle du document ,

dans l'attente de vos réponses !

Bonjour Luc, bonjour le forum,

Visiblement (ou plutôt invisiblement devrais-je dire...), ton fichier n'est pas passé. Malgré tes explications claires, je te recommande de copier l'onglet à modifier pour nous montrer avant et après traitement de la macro...

Le fichier avant le formatage (avant le code VBA)


Le fichier après le formatage (Code VBA)

Dites moi si vous avez encore des questions, n’hésitez pas !

Re

ensuite : j'ai une colonne de satisfaction client :"Intervention", à réaliser en rapport avec une autre colonne :

Si : 4 , 5 : Oui.

Quid ? (comme disait Néron en cherchant son briquet Bic...)

Arrgh,

j'ai encore fais une fausse manip ! Le fichier : ProblemeDonnéeSuite est celui après le formatage, le fichier problèmedonnée1 est celui avant le formatage (ci-joint),

Dans la colonne intervention tu pourras donc voir que pour le problèmedonnée1 on a des chiffres,

sur le problèmedonnéesuite Oui / Non.

Re,

C'est justement dans ls fichier suite que je ne vois aucun oui ni aucun non ?!... Faut que tu arrêtes de boire Luc...

Je te propose de renvoyer les deux fichiers CORRECTS dans ton prochain post pour nous éviter de jongler avec les différents post afin ouvrir les bons fichiers.

MEA MAXIMA CULPA,

je travaille sur plusieurs fichiers Test Excel en même temps...

Bonjour Luc,

Tu n'as pas précisé si tu voulais conserver le classeur extrait ou pas ? Je l'ai conservé et créé une copie... Tu me diras si ça convient.

Le classeur de la macro doit être placé dans le même dossier que le classeur de l'extraction ou, si ce n'est pas le cas, le classeur de l'extraction doit être aussi ouvert au lancement de la macro...

À partir du fichier Classeur Macro.xlsm qui contient le code ci-dessous, clique sur le bouton Lancer la macro.

le code que je te propose fait la chose suivante :

• Ouverture du classeur source ou, si il est déjà ouvert, utilisation de celui-ci (le nom est définit dans la code il faudra adapter)

• Copie du premier onglet du classeur source dans un classeur vierge

• Enregistrement (enregistrer sous) du ce classeur ((le nom est définit dans la code il faudra adapter)

• traitement des données

• Sauvegarde du classeur avec les données traitées

• Fermeture du classeur de la macro

le code :

Sub Macro1()
Dim CM As Workbook 'déclare la variable CM (Classeur de la Macro)
Dim CA As String 'déclare la variable CA (Chemin d'Accès)
Dim NCS As String 'déclare la variable NCS (Nom du Classeur Source)
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim NCF As String 'déclare la variable NCF (Nom du Classeur Final)
Dim CF As Workbook 'déclare la variable CF (Classeur Final)
Dim OF As Worksheet 'déclare la variable OF (Onglet Final)
Dim CEL As Range 'déclare la variable CEL (CELlule)

Set CM = ThisWorkbook 'définit le classeur CM
CA = CM.Path & "\" 'définit le chemin d'accès CA
NCS = "Problème donnéesAvantFormatage.xlsx" 'définit le nom du classeur source NCS (à adapter)
NCF = "ProblemeDonnéeAprèsFormatage2.xlsx" 'définit le nom du classeur final NCF (à adapter)
On Error Resume Next 'gestion des erreur (en cas d'erreur, passe à la ligne suivante)
Set CS = Workbooks(NCS) 'définit le classeur source CS (génère une erreur si le classeur n'est pas ouvert)
If Err <> 0 Then 'condition : si une erreur a été générée
    Err.Clear 'supprime l'erreur
    Workbooks.Open (CA & NCS) 'ouvre le classeur source
    Set CS = ActiveWorkbook 'définit la classeur CS
End If 'fin de la condition
On Error GoTo 0 'annule la gestion des erreurs
Set OS = CS.Sheets(1) 'définit l'onget source (ici le premier du classeur CS, tu adapteras)
OS.Copy 'copet l'onglet source dans un fichier vierge
Set CF = ActiveWorkbook 'définit le classeur final CF
Set OF = CF.ActiveSheet 'définit l'onglet final OF
CF.SaveAs (CA & NCF) 'enregistre  sous, le classeur final
CS.Close SaveChanges:=False 'ferme le classeur source sans enregistrer les modifications
DL = OF.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne A de l'onglet OF
For Each CEL In OF.Range("A2:A" & DL) 'boucle sur toutes les cellules éditées CEL de la colonne A
    Select Case CEL.Value 'agit en fonction de la valeur de la cellule
        Case 1, 2, 3 'cas 1, 2 ou 3
            CEL.Value = "Non" 'redéfinit la valeur de la cellule
        Case 4, 5 'cas 4 ou 5
            CEL.Value = "Oui" 'redéfinit la valeur de la cellule
    End Select 'fin de l'action en fonction de la valeur de la cellule
Next CEL 'prochaine cellule de la boucle
For Each CEL In OF.Range("C2:C" & DL) 'boucle sur toutes les cellules éditées CEL de la colonne C
    CEL.Value = "'" & CStr(Left(CEL.Value, 7)) 'supprime les "01" à la fin et renvoie le numéro sous forme de texte
Next CEL 'prochaine cellule de la boucle
'mise en formet lignes et colonnes
OF.Rows.AutoFit
Application.Union(OF.Range(Columns(1), Columns(6)), OF.Columns(8), OF.Range(Columns(10), Columns(14)), OF.Range(Columns(16), Columns(17)), _
   OF.Range(Columns(19), Columns(26)), OF.Range(Columns(30), Columns(Application.Columns.Count))).Delete
OF.Columns.AutoFit
OF.Columns.HorizontalAlignment = xlGeneral
OF.Columns.VerticalAlignment = xlTop
CF.Save 'sauve le classeur CF
CM.Close SaveChanges:=False 'fermetur du classeur des Macros sans l'enregistrer
End Sub

Le fichier :

17classeur-macro.xlsm (22.94 Ko)

Bonjour et merci ThauTheme de ton aide,

Lors de la première ouverture du fichier que tu m'as renvoyé j'ai pu voir un fonctionnement,

Mais depuis le même message d’erreur s'affiche :

Les fonctionnalités suivantes ne peuvent pas être enregistrées dans des classeurs sans macro :

Pour continuer à enregistrer en tatn que classeur sans macro, cliquez sur Oui.

J'ai essayé plusieurs fois en réalisant un nouvel extract en mettant le fichier Macro et l'extract dans le même dossier, puis en remplaçant les noms dans le code VBA.

Le problème est que lorsque j'active la macro :

Le nouveau fichier ; DonnéesAprèsformatage2 s'ouvre et est exactement comme celui de la macro.

J'essaie d'avancer, mais en tout cas merci beaucoup pour ton aide !

Bonjour Luc, bonjour le forum,

Relis mon post précédent il me semble très clair sur la marche à suivre !

As-tu enregistré le fichier que je t'ai fourni dans la même dossier que les fichiers Avant et Après ?

Je doute que ces fichiers s'appellent réellement :

• Problème donnéesAvantFormatage.xlsx

• ProblemeDonnéeAprèsFormatage2.xlsx

As-tu adapter ces nom dans le code comme je te le demandais ?

Tant que tu n'auras pas fait ça, le code ne fonctionnera pas !...

Rechercher des sujets similaires à "vba probleme condition"