si cellule X commence par 2014 , X étant déjà résultat d' une macro

andrekn13

XLDnaute Occasionnel
Bonjour
Je bugg sur la syntaxe :
Workbooks.Open ThisWorkbook.Path & "\GESTION2013.xlsm"
'définition de Wkc :classeur gestion, WkB : classeur base fact
Set WkC = Workbooks("GESTION2013.xlsm"): Set WkB = ThisWorkbook
Gaz = Array("404", "134", "407", "410", "NBR", "DEC", "N-m", "N-N", "REC", "REI", "HS", "CLO")
'i est une ligne, 8 correspond à la 8ème ligne où commence le tableau gaz
i = 8
'sur BASE FACT on commence la récap au 5ème onglet
For s = WkB.Sheets.Count To 5 Step -1
With WkB.Sheets(s)
'on faitla recherche dans chaque feuille entre la ligne 22 et 40
For j = 22 To 40 'j et une ligne
For L = 0 To UBound(Gaz) 'à voir
'dans BASE FACT, si à la 1ère cellule il y a un "R"suivi par "404" ( les 3 autres définis dans array) ET .Cells(j, 8):dans base fact entre ligne 22 et 40,la quantité en 8ème colonne , ALORS ...
'UCase converti la cellule en majuscule pour que le R soit reconnu
'le point avant cells, c'est pour dire que ces cellules sont celles qui accompagnent le with, donc de FACT BASE et non de la feuille active gaz 2013
'cell est une cellule qui est définie par sa ligne puis sa colonne
If UCase(.Cells(j, 1)) Like "*R*" & Gaz(L) & "*" And .Cells(j, 8) _
And Range("H17").Value Like "*2013*" _
And Range("H17").Value Like "*2012*" _
<> "" Then
voilà le code :
And Range("H17").Value Like "*2013*" _ n'est pas pris en compte

Merci de votre aide
 

andrekn13

XLDnaute Occasionnel
Re : si cellule X commence par 2014 , X étant déjà résultat d' une macro

je viens de rajouter message rien ,,,,,,rien
je reprécise : ma macro est
Sub Récap7Gaz2013()
Dim WkC As Workbook, WkB As Workbook
Dim i&, j&, L&, s&
Dim Gaz()
Application.ScreenUpdating = 0: Application.EnableEvents = 0: Application.DisplayAlerts = 0

Workbooks.Open ThisWorkbook.Path & "\GESTION2013.xlsm"
'définition de Wkc :classeur gestion, WkB : classeur base fact
Set WkC = Workbooks("GESTION2013.xlsm"): Set WkB = ThisWorkbook
Gaz = Array("404", "134", "407", "410", "NBR", "DEC", "N-m", "N-N", "REC", "REI", "HS", "CLO")
'i est une ligne, 8 correspond à la 8ème ligne où commence le tableau gaz
i = 8
'sur BASE FACT on commence la récap au 5ème onglet
For s = WkB.Sheets.Count To 5 Step -1
With WkB.Sheets(s)
'on faitla recherche dans chaque feuille entre la ligne 22 et 40
For j = 22 To 40 'j et une ligne
For L = 0 To UBound(Gaz) 'à voir
'dans BASE FACT, si à la 1ère cellule il y a un "R"suivi par "404" ( les 3 autres définis dans array) ET .Cells(j, 8):dans base fact entre ligne 22 et 40,la quantité en 8ème colonne , ALORS ...
'UCase converti la cellule en majuscule pour que le R soit reconnu
'le point avant cells, c'est pour dire que ces cellules sont celles qui accompagnent le with, donc de FACT BASE et non de la feuille active gaz 2013
'cell est une cellule qui est définie par sa ligne puis sa colonne
'If UCase(.Cells(j, 1)) Like "*R*" & Gaz(L) & "*" And .Cells(j, 8) And .Range("h17") = Year(Now) & Format(Range("Num_Fact"), "000") <> "" Then
'If UCase(.Cells(j, 1)) Like "*R*" & Gaz(L) & "*" Then
If UCase(.Cells(j, 1)) Like "*R*" & Gaz(L) & "*" And .Cells(j, 8) <> "" Then
If Range("H17").Value Like "2014*" Then
MsgBox .Cells(j, 1).Address
'If .Cells(j, 8) And .Cells(18, 8) = Year(Now) <> "" Then
'1 :eek:n récupère l' info de la date dans " gaz 2013" Cells(i, 1)dans la 1ère colonne quand il y a un chiffre rempli dans quantité
WkC.Sheets("gaz 2014 detail").Cells(i, 1) = .[H18]
'2: on récupère l'info du lien hypertexe, Cells(i, 2),à 8ème ligne dans la 2ème colonne
WkC.Sheets("gaz 2014 detail").Hyperlinks.Add Anchor:=Cells(i, 2), Address:=WkB.FullName, _
SubAddress:="'" & WkB.Worksheets(s).Name & "'!H17", _
TextToDisplay:=Str(WkB.Sheets(s).Range("H17"))
'adresse de gaz 2013, on place ce tableau à la 8ème ligne, à partir de la 4ème colonne les résultats de BASE FACT entre ligne 22 et 40,la quantité en 8ème colonne
WkC.Sheets("gaz 2014 detail").Cells(i, L + 4) = .Cells(j, 8)
WkC.Sheets("gaz 2014 detail").Cells(i, 8) = .[J12]
WkC.Sheets("gaz 2014 detail").Cells(i, 9) = .[J13]
WkC.Sheets("gaz 2014 detail").Cells(i, 10) = .[J14]
WkC.Sheets("gaz 2014 detail").Cells(i, 11) = .[J15]
WkC.Sheets("gaz 2014 detail").Cells(i, 12) = .[J16]
WkC.Sheets("gaz 2014 detail").Cells(i, 13) = .[J17]
WkC.Sheets("gaz 2014 detail").Cells(i, 14) = .[J18]
WkC.Sheets("gaz 2014 detail").Cells(i, 15) = .[J19]
i = i + 1
End If
End If
Next L
Next j
End With
Next s



' POUR EFFACER TOUTES LES LIGNES QUI NE CONCERNENT PAS L' ANNEE EN COURS
'For n = Range("B" & Rows.Count).End(xlUp).Row To 7 Step -1
'If Range("B" & n).Value Like "*2013*" Then
' Rows(n).ClearContents
' End If
'Next
'For m = Range("B" & Rows.Count).End(xlUp).Row To 7 Step -1
' If Range("B" & m).Value Like "*2012*" Then
'Rows(m).ClearContents
' End If
' Next


WkC.Save:
Application.ScreenUpdating = 1: Application.EnableEvents = 1: Application.DisplayAlerts = 1
End Sub
 

Staple1600

XLDnaute Barbatruc
Re : si cellule X commence par 2014 , X étant déjà résultat d' une macro

Re

Ce qui compte c'est la syntaxe ci-dessous
'ici debut du code
If UCase(.Cells(j, 1)) Like "*R*" & Gaz(L) & "*" Then
If .Cells(j, 8) <> "" Then
MsgBox .Cells(j, 1).Address ' pour test [AJOUT STAPLE]

'ici suite du code

Testes en faisant simplement cet ajout et en ayant fait la modif ci-dessous dans une des feuilles
saisie en A22 de R404test et d'une valeur en colonne H
Le MsgBox s'affiche bien, non?

PS: J'avais renommé car j'avais pris une macro ou le nom de la feuille était gaz 2014
Donc fais le test avec la macro de ton choix mais avec le modifs suggérées plus haut
(juste pour voir le MsgBox s'affiche bien comme il s'affiche sur mon PC)
 

andrekn13

XLDnaute Occasionnel
Re : si cellule X commence par 2014 , X étant déjà résultat d' une macro

le but est que dans la feuille "gaz 2014 detail" on ne voit aparaître depuis le début du tableau , dans l' ordre" que les lignes qui concernent 2014, hors la macro regroupe tout malgré la condition " ANNEE"
 

andrekn13

XLDnaute Occasionnel
Re : si cellule X commence par 2014 , X étant déjà résultat d' une macro

bonjour STAPLE1600
j'ai ajouter la massage box là où ça coince et rien ne s' affiche , c' est évident que mon code ne fonctionne donc pas :
Sub Gaz2014detail2()

Dim WkC As Workbook, WkB As Workbook
Dim i&, j&, L&, s&
Dim Gaz()
Dim annee As Integer


Application.ScreenUpdating = 0: Application.EnableEvents = 0: Application.DisplayAlerts = 0

Workbooks.Open ThisWorkbook.Path & "\GESTION2013.xlsm"

Set WkC = Workbooks("GESTION2013.xlsm"): Set WkB = ThisWorkbook
Gaz = Array("404", "134", "407", "410")
i = 8
annee = 2014
For s = WkB.Sheets.Count To 5 Step -1
With WkB.Sheets(s)

For j = 22 To 40
For L = 0 To UBound(Gaz)

If WkB.Sheets(s).Range("H17").Value = "ANNEE*" Then
MsgBox .Range("H17").Address

WkC.Sheets("gaz 2014 detail").Cells(i, 1) = .[H18]

WkC.Sheets("gaz 2014 detail").Hyperlinks.Add Anchor:=Cells(i, 2), Address:=WkB.FullName, _
SubAddress:="'" & WkB.Worksheets(s).Name & "'!H17", _
TextToDisplay:=Str(WkB.Sheets(s).Range("H17"))

WkC.Sheets("gaz 2014 detail").Cells(i, L + 4) = .Cells(j, 8)
i = i + 1
End If

Next L
Next j
End With
Next s


WkC.Save:
Application.ScreenUpdating = 1: Applica

c' est donc :
If WkB.Sheets(s).Range("H17").Value = "ANNEE*" Then
MsgBox .Range("H17").Address
qui bugg
ps : comment fait on pour avoir la même représentation de la page VBA ?
Cordialement
 

Yaloo

XLDnaute Barbatruc
Re : si cellule X commence par 2014 , X étant déjà résultat d' une macro

Bonsoir tout le monde,

Pourquoi ne pas utiliser
VB:
If UCase(.Cells(j, 1)) Like "*R*" & Gaz(L) & "*" And .Cells(j, 8) <> "" And Year(.[H18]) = Year(Now) Then

A+

Martial
 

Statistiques des forums

Discussions
312 332
Messages
2 087 365
Membres
103 528
dernier inscrit
maro