Condition identique sur colonne

barca-powa

XLDnaute Nouveau
Bonjour!

J'ai un probleme avec le codage d'une macro.
J'ai pour l'instant trouvé comment importer uniquement un fichier .csv, effectuer quelques opération dessus, comparer 2 colonnes et affichier si ces colonnes sont identiques.

Maintenant je bloc sur comment faire pour que les operation ce face sur 30 ligne (de la 10 a 40) puis reprenne automatiquement sur une feuille suivante pour laisser de la place a la mise en page pour par la suite etre imprimé.

Et ma 2nd requete, si tout est OK je souhaite colorier en vert plusieur case pour signaler que sur cette page c'est OK ou en rouge si sur la page c'est NOK.

Voici mon code pour l'instant.

Code:
Option Explicit
  
Sub Csv()
Dim Fichier As Variant
    ChDir ThisWorkbook.Path
    Fichier = Application.GetOpenFilename("Fichier CSV (*.csv), *.csv")
    If Fichier <> False Then
        LireVerifier Fichier
    End If
End Sub
  
Function LireVerifier(ByVal NomFichier As String)
Dim Chaine As String
Dim Ar() As String
Dim i As Long
Dim iRow As Long, iCol As Long
Dim NumFichier As Integer
Dim Separateur  As String * 1
  
    Separateur = ";"
      
    Cells.Clear
    Application.ScreenUpdating = False
    NumFichier = FreeFile
    iRow = 10
     
    Open NomFichier For Input As #NumFichier
        Do While Not EOF(NumFichier)
            iCol = 1
            Line Input #NumFichier, Chaine
            Ar = Split(Chaine, Separateur)
            For i = LBound(Ar) To UBound(Ar)
                Ar(i) = Replace(Ar(i), "M-", "")
                Cells(iRow, iCol) = Ar(i)
                iCol = iCol + 1
            Next
             
            Select Case Cells(iRow, 1)
                Case Is = Cells(iRow, 2): Cells(iRow, 3) = "OK"
                Case Else: Cells(iRow, 3) = "NOK"
            End Select
            Select Case Cells(iRow, 1)
                Case Is = Cells(iRow, 2): Cells(iRow, 3).Value = "OK"
                Cells(iRow, 3).Font.ColorIndex = 4
                Cells(iRow, 3).Font.Bold = True
                 
                Case Else: Cells(iRow, 3) = "NOK"
                Cells(iRow, 3).Font.ColorIndex = 3
                Cells(iRow, 3).Font.Bold = True
            End Select

            
            iRow = iRow + 1
        Loop
    Close #NumFichier

    Application.ScreenUpdating = True
End Function

Je fais un bts iris donc le VB et ses méthodes de codage ne me sont pas famillaire... :p .

Merci de votre aide!
 

Gorfael

XLDnaute Barbatruc
Re : Condition identique sur colonne

barca-powa à dit:
Vraiment personne pour m'aider ? :(
Salut
J'ai pas de solution, parce que je n'ai pas fait d'importation en VB

Mais...
Select Case Cells(iRow, 1)
Case Is = Cells(iRow, 2): Cells(iRow, 3) = "OK"
Case Else: Cells(iRow, 3) = "NOK"
End Select
Select Case Cells(iRow, 1)
Case Is = Cells(iRow, 2): Cells(iRow, 3).Value = "OK"
Cells(iRow, 3).Font.ColorIndex = 4
Cells(iRow, 3).Font.Bold = True

Case Else: Cells(iRow, 3) = "NOK"
Cells(iRow, 3).Font.ColorIndex = 3
Cells(iRow, 3).Font.Bold = True
End Select
T'as rien de plus compliqué à mettre ? :D
Ce que je lis :
mettre en variable Case la valeur Cells(iRow, 1)
si elle est égale à la valeur de Cells(iRow, 2)
alors Cells(iRow, 3) = "OK" sinon Cells(iRow, 3) = "NOK"

remettre en variable Case la valeur Cells(iRow, 1)
si elle est égale à la valeur de Cells(iRow, 2)
alors Cells(iRow, 3) = "OK" en police Gras/couleur 4
sinon Cells(iRow, 3) = "NOK" en police gras/couleur3

Personnellement, je traiterai cette partie comme suit :
range("C" & iRow).Font.Bold = True
if range("A" & iRow)=range("B" & iRow) then
range("C" & iRow) = "OK"
range("C" & iRow).Font.ColorIndex = 4
else
range("C" & iRow) = "NOK"
range("C" & iRow).Font.ColorIndex = 3
End if
A+
 

barca-powa

XLDnaute Nouveau
Re : Condition identique sur colonne

c'est vrai ca marche aussi... :rolleyes: Mais bon je cherche un peu partout et j'essai d'adapter donc c'est par forcément bien codé.

N'ayant pas trouvé de solution pour un autre probleme (faire un carré vert si tout es OK ou rouge si NOK) j'ai essayé de codé moi meme. J'arrive a ca:

Code:
            E21=NB.SI(C11:C30;"OK").Interior.ColorIndex = 10
            E22=NB.SI(C11:C30;"OK").Interior.ColorIndex = 10
            E23=NB.SI(C11:C30;"OK").Interior.ColorIndex = 10
            F21=NB.SI(C11:C30;"OK").Interior.ColorIndex = 10
            F22=NB.SI(C11:C30;"OK").Interior.ColorIndex = 10
            F23=NB.SI(C11:C30;"OK").Interior.ColorIndex = 10
Biensur ca marche pas... il me dit attendu: séparateur de liste ou ). Pour moi un séparateur c'est soit : ou ; mais aucun ne marche. Une solution?
 

barca-powa

XLDnaute Nouveau
Re : Condition identique sur colonne

Bon j'ai décidé de faire des enregistrements de macro avec des mises en forme conditionnel.
Mais je but sur la mise en page.

Donc j'ouvre un fichier.csv qui contient un nombre indeterminé de ligne de donnée. J'ai besoin que sur une feuille format A4 il y est 31 lignes (de 10 à 40) pour mettre l'entête de l'entreprise et des informations autour.
Donc j'aimerais un code qui sorte 31 lignes sur chaque format A4 et qu'il repete le reste de mon code.
En gros un code qui duplique ma mise en page et qui prend 31ligne par 31.

Merci de votre aide!
 

barca-powa

XLDnaute Nouveau
Re : Condition identique sur colonne

Vraiment personne sait? J'ai cherché dans les fonctions mais y'a rien.
Et je ne vois pas trop quel genre de code peut dupliquer une présentation et ecrire des 31 lignes d'affilé puis en sauté une 20e puis en refaire 31.... :confused:
 

Discussions similaires

Statistiques des forums

Discussions
312 435
Messages
2 088 401
Membres
103 839
dernier inscrit
Patounet66