RechercheV et mise en forme Conditionelle
Bonjour,
Je débute en excel VBA et j'avais des question concernant une manipulation.
Mon code VBA concerne un fichier de transfert qui récupéré toutes les données dans un dossier composé de classeur Excel. Ensuite, toute les données du fichier de transfert sont copier/coller dans un fichier "mère" qui est d'un autre format.
Pour cette étapes je fais une recherche verticale dans une plage de données.
J'ai une plage de données définie en colonne variables en lignes. Mon nombre de colonne définie mon code peinture qui est connue et ne bouge pas. Mon nombre de ligne lui est définie par rapport au nombre de ligne de mon fichier transfert.
J'ai donc enregistré une macro pour faire la manipulation afin d'avoir quelques lignes vba car je ne savais pas du tout comment partir.
Je me suis rendue compte pour des soucis de simplicité que je devais intégrer ma formule à toute une plage de données. (Nombre de colonne code peinture et nombre de ligne de mon fichier transfert). Pour voir plus rapidement les datas non essentiel je me suis dis qu'une mise en forme conditionnelle en rouge des valeurs d'erreur ça pourrait être pas mal.
Bref.
Sur le module 1 de mon fichier transfert impeccable tout fonctionne bien.
Sur la feuill1 de mon fichier transfert pas du tout. J'ai des erreurs d'objet j'arrive à en débeguer certaines mais pas toute.
Je voulais savoir s'il était possible de m'aiguiller ou d'avoir d'éventuelles idées sur la réalisation de cette manipulation ? S'il vous plaît
Charlie
Sub Recherche()
' Recherche Macro
Workbooks("J35 Base de données peinture LPM Test.xlsm").Worksheets("BD L34").Activate
' Longueur du tableau de code peinture ne change jamais
L_Tableau = "O2:AD2"
' Plage de datas qui dépend du nombre de ligne du paint report
Plage = "O2: AD10"
' Suppression des anciennes valeurs
Range(Plage).ClearContents
' Intégration de la formule de recherche vertical en lien avec le fichier de paint report transfer
Range("O2").Select
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(R1C,'[Paint Report 113-114 Test.xlsm]Feuil1'!RC4:R100C5,2,FALSE)"
Selection.AutoFill Destination:=Range(L_Tableau), Type:=xlFillDefault
Range(L_Tableau).Select
Selection.AutoFill Destination:=Range(Plage), Type:=xlFillDefault
' Activation du fichier client
Windows("J35 Base de données peinture LPM Test.xlsm").Activate
Range(Plage).Select
' Sélection de la condition de format en mise en forme conditionelle
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=ESTERREUR(O2)"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
End With
End SubEdit modo : code mis entre balise
Bonjour Gonzaleo et
Une petite présentation ICI serait la bienvenue
Si vous ne l'avez pas encore fait, je vous invite à lire la charte du forum [A LIRE AVANT DE POSTER]
qui vous aidera dans vos demandes et réponses sur ce forum
Ainsi que sur les fonctionnalités (Nouveau Forum au bas de page notamment)
La prochaine fois, vous voudrez bien mettre les codes que vous donnez entre balises SVP
avec le bouton
Merci de votre participation
Cordialement
Bonjour BrunoM45,
J'ai bien lu la charte du forum même si ça ma permis de la relire.
Je regarderais les cours il a surement des choses intéressantes même après quelques tutos. De même pour les fonctionnalités
Pour la balise ça tombe super bien car je me demandais comment on faisait.
Sinon pour Confucius j'adore, en plus la pèche c'est vraiment bien quand ça mord ! je cite à cela " pierre qui roule n'amasse pas mousse ".
Rebonjour,
Voilà mon extrait VBA qui me permet d'intégrer la formule de recherche vertical et de mettre en format conditionnelle mes cellules d'erreur.
Je voulais maintenant savoir s'il était possible de faire un code qui sélectionne toute les cellules ou #N/A apparait pour ensuite effacer le contenue ?
De manière à obtenir un tableau sans valeur d'erreur.
Bien cordialement,
Sub Recherche()
' Ouverture du fichier de travail
Workbooks.Open Filename:="C:\Users\charl\OneDrive\Bureau\Code VBA CDA\Fichier Client\J35 Base de données peinture LPM Test.xlsm"
' Longueur du tableau de code peinture ne change jamais
' Plage de datas qui dépend du nombre de ligne du paint report
Plage = "O2: AD10"
' Suppression des anciennes datas de la plage de travail
Workbooks("J35 base de données peinture LPM Test.xlsm").Worksheets("BD L34").Range(Plage).ClearContents
' Initialisation de la formule de recherche verticale dans le tableau de donnée concerné
Workbooks("J35 base de données peinture LPM Test.xlsm").Worksheets("BD L34").Range(Plage).Formula = "=VLOOKUP(R1C,'[Paint Report 113-114 Test.xlsm]Feuil1'!RC4:R100C5,2,FALSE)"
' Sélection de la condition de format en mise en forme conditionelle
' Mise en forme en rouge des cellules d'erreur pour permettre une meilleur lecture du fichier client.
Workbooks("J35 base de données peinture LPM Test.xlsm").Worksheets("BD L34").Range(Plage).FormatConditions.Add Type:=xlExpression, Formula1:= _
"=ESTERREUR(O2)"
Workbooks("J35 base de données peinture LPM Test.xlsm").Worksheets("BD L34").Range(Plage).FormatConditions(Workbooks("J35 base de données peinture LPM Test.xlsm").Worksheets("BD L34").Range(Plage).FormatConditions.Count).SetFirstPriority
With Workbooks("J35 base de données peinture LPM Test.xlsm").Worksheets("BD L34").Range(Plage).FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic .Color = 255
.TintAndShade = 0
End With
End Sub
Bonjour Gonzalelo,
Pour éviter de faire 2 passages, pourquoi ne pas utiliser SIERREUR() dans la formule
A+
Bonjour BrunoM45,
Je vais regarder comment faire ça l'idée me plait plutôt bien.
Je voulais te demander est-il possible de créer une interface ou tu sélectionne ta plage de données plutôt que de la définir dans le code comme dans mon extrait de code ? Si oui, peux tu m'aiguiller car je n'arrive pas vraiment à trouver de piste de départ sur internet.
Tchao