fonction "ou" en vba

almas

XLDnaute Occasionnel
Bonjour le forum

je cherche à modifier une partie d' un code :

With Sheets(k).[L17:M96] colones L et M = mois de debut de date et fin de date
Set a = .Find(tx, LookIn:=xlValues)
If Not a Is Nothing Then
firstAddress = a.Address

dans cette partie je compare un mois des colonne L et M au mois de la valeur "tx" pour exécuter un reporte de ligne si c 'est la même valeur
seulement si L et M on la même valeur ,le code exécute 2 fois le report

je voudrai trouver un moyen de faire que le code exécute le report si il trouve la valeur "tx" dans L ou M, mais qu' une fois

il y a bien la fonction "or" mais je sais pas comment l utiliser dans ce cas (entre 2 colonnes)

Merci d 'avance si quelqu' un peut m aider sur ce problème
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : fonction "ou" en vba

Bonsoir Almas, Garcimore, bonsoir le forum,

Tout à fait d'accord avec Çamarchepas, si tu ne fais pas l'effort de joindre un petit fichier exemple, tu risques d'attendre longtemps une réponse. Tu devrais le savoir d'autant plus que tu as déjà 127 posts au compteur... Sinon, au pire, tu mets au moins le code complet...
Bref, tu nous évites de recréer ton problème avant de te proposer une solution.

Mais faut croire que c'est c'est ton jour de chance (ou plutôt que je m'emm..dais grave) et je te propose le code ci-dessous à adapter :

Code:
Sub Macro2()
Dim TX As String
Dim LI As Integer
Dim K As Byte
Dim A As Range

TX = "samedi"
K = 1
With Sheets(K).Range("L17:M96")
    Set A = .Find(TX, LookIn:=xlValues)
    If Not A Is Nothing Then
        PA = A.Address
        Do
            If A.Row = LI Then GoTo suite
            LI = A.Row
            MsgBox "trouvé en " & A.Address(0, 0)
suite:
            Set A = .FindNext(A)
        Loop While Not A Is Nothing And A.Address <> PA
    End If
End With
End Sub
qui fonctionne avec ce fichier que j'ai eu le courage de créer pour toi (hou la la que ça a été dur !...) :
 

Pièces jointes

  • Almas_v01.xls
    37.5 KB · Affichages: 37

almas

XLDnaute Occasionnel
Re : fonction "ou" en vba

Bonjour le forum ;camarche pas; robert

tous d 'abord merci à toi robert de t' être penché sur mon probleme, et j' ai fait simple dans ma demande car je pensais avoir mis toute la partie nécessaire du code et ce post fait suite a mon précédant post ou j 'avais mis l 'ensemble de mon problème avec fichier joint(https://www.excel-downloads.com/threads/modification-de-code-macro-aide.222689/).Désoler si j 'ai manqué de précision.

je vais tester cette modif et essayer de l intégrer dans mon code.....
 
Dernière édition:

almas

XLDnaute Occasionnel
Re : fonction "ou" en vba

bon ça marche bien merci beaucoup Robert

voila le code complet modifier:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$E$3" Then Exit Sub
Application.EnableEvents = False
tx = [E3]
lig = 8
[A8:J400].ClearContents
'Stop
Set plage = Sheets("base de donnée").Range("T2:T90")
For Each cel In plage
flag = 0
k = cel.Value
If k = "" Then Application.EnableEvents = True: Exit Sub
'Stop
For Each sh In ActiveWorkbook.Sheets
If sh.Name = k Then A = sh.Name: flag = 1: Exit For
Next sh
If flag = 0 Then MsgBox ("La feuille " & k & " n'existe pas, Faire les modif nécessaires"): Application.EnableEvents = True: Exit Sub

With Sheets(k).[L17:m96]
Set A = .Find(tx, LookIn:=xlValues)
If Not A Is Nothing Then
PA = A.Address
Do
If A.Row = LI Then GoTo suite
LI = A.Row
Cells(lig, 1) = Sheets(k).Cells(A.Row, 1)
Cells(lig, 2) = Sheets(k).Cells(A.Row, 2)
Cells(lig, 3) = Sheets(k).Cells(A.Row, 3)
Cells(lig, 4) = Sheets(k).Cells(A.Row, 4)
Cells(lig, 5) = Sheets(k).Cells(A.Row, 5)
Cells(lig, 6) = Sheets(k).Cells(A.Row, 6)
Cells(lig, 7) = Sheets(k).Cells(A.Row, 7)
Cells(lig, 8) = Sheets(k).Cells(A.Row, 8)
Cells(lig, 9) = Sheets(k).Cells(A.Row, 9)
lig = lig + 1
suite:
Set A = .FindNext(A)
Loop While Not A Is Nothing And A.Address <> PA
End If
End With
'End If
Next
Application.EnableEvents = True
End Sub



et je joint le fichier

Merci encore Bonne journée
Alain
 

Pièces jointes

  • Gestion du personnel 2014 en modification.xls
    445 KB · Affichages: 31
  • Gestion du personnel 2014 en modification.xls
    445 KB · Affichages: 39
  • Gestion du personnel 2014 en modification.xls
    445 KB · Affichages: 45
Dernière édition:

camarchepas

XLDnaute Barbatruc
Re : fonction "ou" en vba

Bonjour à tous ,

Pour le transfert des données une forme un peu plus contractée est possible ,

Le principal étant bien sur d'être à laisse dans l'écriture et la compréhension de ta macro

Code:
Public flag As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$E$3" Then Exit Sub
Application.EnableEvents = False
tx = [E3]
lig = 8
[A8:J400].ClearContents
'Stop
Set plage = Sheets("base de donnée").Range("T2:T90")
For Each cel In plage
 flag = 0
 k = cel.Value
 If k = "" Then Application.EnableEvents = True: Exit Sub
'Stop
 For Each sh In ActiveWorkbook.Sheets
  If sh.Name = k Then A = sh.Name: flag = 1: Exit For
 Next sh
 If flag = 0 Then MsgBox ("La feuille " & k & " n'existe pas, Faire les modif nécessaires"): Application.EnableEvents = True: Exit Sub

 With Sheets(k).[L17:m96]
  Set A = .Find(tx, LookIn:=xlValues)
  If Not A Is Nothing Then
    PA = A.Address
    Do
     If A.Row <> li Then
       li = A.Row
       Range("A" & li & ":I" & li) = Sheets(k).Range("A" & A.Row & ":I" & A.Row).Value
       lig = lig + 1
     End If
     Set A = .FindNext(A)
    Loop While Not A Is Nothing And A.Address <> PA
  End If
 End With
Next
Application.EnableEvents = True
End Sub
 

almas

XLDnaute Occasionnel
Re : fonction "ou" en vba

super camarchepas...ce code va effectivement bien plus vite !!!;) merci

par contre 2 problèmes, l 'écriture ne par pas de "A8" et si plusieurs onglets on réécrit sur les 1er lignes
je sais pas si c 'est possible que toutes les donnée s ' inscrivent a la suite a partir de la cellule A8
je joint le fichier avec ton code
 

Pièces jointes

  • Gestion du personnel 2014 en modification2.xls
    434.5 KB · Affichages: 35
  • Gestion du personnel 2014 en modification2.xls
    434.5 KB · Affichages: 39
  • Gestion du personnel 2014 en modification2.xls
    434.5 KB · Affichages: 34

camarchepas

XLDnaute Barbatruc
Re : fonction "ou" en vba

Re ,

et oui , je sais pas si c'est une coquille de ma part , ou si ton code était déjà comme cela ,

enfin je viens de rectifier
 

Pièces jointes

  • Gestion du personnel 2014 en modification2.xls
    393 KB · Affichages: 40
  • Gestion du personnel 2014 en modification2.xls
    393 KB · Affichages: 45
  • Gestion du personnel 2014 en modification2.xls
    393 KB · Affichages: 43

almas

XLDnaute Occasionnel
Re : fonction "ou" en vba

le top camarchepas ! merci c 'est vrai que c 'est pas évident de reprendre le code d ' un autre....

un grand merci et je joint le fichier final pour ceux qui voudrai adapter ce code à un de leur classeur

cordialement
Alain
 

Pièces jointes

  • Gestion du personnel 2014 en modification final.xls
    559.5 KB · Affichages: 41
Dernière édition:

almas

XLDnaute Occasionnel
Re : fonction "ou" en vba

j 'ai une question technique supplémentaire et peut être quelqu un a l' explication....

ce code passe en revus onglets par onglets pour afficher les lignes si la consigne est respecté...mais je m explique pas pourquoi si j 'ai 2 onglets comme dans le fichiers du dessus l’écriture des lignes s’effectue très rapidement et si j 'ai 80 onglets la l'écriture des lignes deviens super lent.
je vois pas ou le code boucle pour perdre du temps comme ça....on dirait qu' il passe tous les onglets en revus à chaque fois......alors qu ' il devrait les faire les un après les autres et donc le nombres d'onglets ne devrait pas influer sur la vitesse de calcul....
j 'avoue que je vois pas ou est l 'explication (a défaut d' une solution ^^)
 

camarchepas

XLDnaute Barbatruc
Re : fonction "ou" en vba

re ,

J'ai vu que tu as énormément de formules dans ton classeur , cela alourdie donc la mise à jour

essayes d'ajouter

en début de macro Application.Calculation = xlManual


et donnes moi de tes nouvelles ensuite ..
et juste à la fin de la macro : Application.Calculation = xlCalculationAutomatic
 

almas

XLDnaute Occasionnel
Re : fonction "ou" en vba

INCROYABLE!!!!!!!!!!!!!!!!!

j'ai appliqué à toutes mes macros c 'est un régal! ou il fallait 30 a 45m (pour les gros mois comme juillet) , maintenant c 'est 3 secondes!!!

si j 'ai bien compris ça déactive les formules le temps de la macro et après cela les réactives pour qu' ils s 'effectues....

j 'aurai pas cherché du coté des calculs de la feuille pour les ralentissements....

Par contre faut bien les placer :après le 1er Sub et avant le End Sub

Merci camarchepas;)
 

Statistiques des forums

Discussions
312 338
Messages
2 087 396
Membres
103 534
dernier inscrit
Kalamymustapha