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

En enlevant les explications " ' ", pour résumer
Workbooks.Open ThisWorkbook.Path & "\GESTION2013.xlsm"

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 = 8

For s = WkB.Sheets.Count To 5 Step -1
With WkB.Sheets(s)
For j = 22 To 40
For L = 0 To UBound(Gaz)
And Range("H17").Value Like "*2013*" _
And Range("H17").Value Like "*2012*" _
 

Staple1600

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

Bonjour à tous

andrekn13
Il ne serait pas forcément inutile de penser à joindre un fichier exemple, non?
Cela éviterait de perdre du temps à recréer un fichier qui existe déjà sur ton disque dur ;)
Il faut juste que tu l’anonymises et l’allège si possible avant de le poster dans ta discussion.

PS: Tu peux aussi utiliser les balises BBCODE [NOPARSE]
Code:
Texte de la macro
[/NOPARSE]
Cela rendra ton message plus agréable à lire ;)
 

andrekn13

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

bonjour
merci de m' aider , je m' en occupe, car je tourne en rond , je crois qu'il faut coder avec 2 conditions
"si dans mon tableau ligne 22 à 40 je contient : R et une des quatre possibilitées : 404 ou 134 ou 407 ou 410
et
"si ma cellule H17 "qui correspond à l' année "201X"
alors
 

andrekn13

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

RE
la macro en question est la derniere du module 1
Sub Récap7Gaz2013()
et oui le nbre de tentatives augmente depuis cette nuit !
 

Pièces jointes

  • GESTION2013.xlsm
    23.2 KB · Affichages: 27
  • GESTION2013.xlsm
    23.2 KB · Affichages: 41
  • GESTION2013.xlsm
    23.2 KB · Affichages: 40
  • BASE FACT.xlsm
    220.4 KB · Affichages: 41
  • BASE FACT.xlsm
    220.4 KB · Affichages: 51
  • BASE FACT.xlsm
    220.4 KB · Affichages: 48
Dernière édition:

Staple1600

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

Re

Anonymisation pas tout à fait complète ;)
K**FOU ANDRE / AK FROID

Sinon dans ton exemple (et sauf erreur de ma part) ,cette feuille n'existe pas dans ton classeur
WkC.Sheets("gaz 2013").Cells(i, 1) = .[H18]
 

andrekn13

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

le code qui coince :
If UCase(.Cells(j, 1)) Like "*R*" & Gaz(L) & "*" And .Cells(j, 8) And .Cells(18, 8) = Year(Now) <> "" Then

c'est le mise en forme de la 2ème condition :And .Cells(18, 8) = Year(Now)
j' ai essayé toutes sortes de possibilités
condition 1:
UCase(.Cells(j, 1)) Like "*R*" & Gaz(L) & "*" And .Cells(j, 8)
condition 2 :
Range("H17").Value Like "*2013*" ????
 

Staple1600

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

Re

Moi je regarde betement ou tu me dis de regarder ;)
la macro en question est la derniere du module 1
Sub Récap7Gaz2013()
C'est vrai que ce n'est pas la dernière ;)

Pour revenir à ta question :
Et comme cela
If UCase(.Cells(j, 1)) Like "*R*" & Gaz(L) & "*" Then
If .Cells(j, 8) And .Cells(18, 8) = Year(Now) <> "" Then
' ton code
End If
End If
 

andrekn13

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

re bnjour
je viens d' essayer avec :
If UCase(.Cells(j, 1)) Like "*R*" & Gaz(L) & "*" And .Cells(j, 8) <> "" Then
If Range("H17").Value Like "2014*" Then
que je viens de voir sur un autre post et rien n'y fait .....
merci de votre aide
 

Staple1600

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

Re

Avec les modifs adéquates (renommage de la feuille en gaz 2014)
et saisie en A22 de R404test et d'une valeur en colonne H
la MgsBox affiche bien l'adresse de la plage, donc la syntaxe semble bonne non ?
PS: J'ai testé avant de publier ce message.
Je te laisse faire la modif sur ton code pour tester et nous dire si la MsgBox s'affiche bien.
Code VBA:
'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 poit 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) & "*" Then
If .Cells(j, 8) <> "" Then
MsgBox .Cells(j, 1).Address ' pour test [AJOUT STAPLE]
'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").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").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").Cells(i, L + 4) = .Cells(j, 8)
i = i + 1
End If
End If
 

andrekn13

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

Bonsoir
décidément je bugg, toute ma macro situe tout à la fin du modul 1, ma feuille concerne "gaz 2014 detail"
je ne comprends pas en quoi cela change de changer cette feuille de nom
 

Statistiques des forums

Discussions
312 330
Messages
2 087 346
Membres
103 525
dernier inscrit
gbaipc