J'ai le code suivant qui ne fonctionne pas au niveau des conditions.
si U10 la date est > à aujourd'hui et qu'en W10 il n'y a pas de date, on passe à l'analyse de la ligne suivante sans recopier
Resume Next
Pour indiquer au programme de passer à la ligne suivante (enfin.. au prochain next) il te faut utiliser l'instruction : Code Visual Basic :
Resume Next
Sub test() For l = 1 To 10 ' ne lance la fonction extract que si L = 5 If l = 5 Then extract (l) Next End Sub Function extract(ligne) 'ceci est ma fonction MsgBox ligne End Function
Private Sub CommandButton1_Click() Dim Chemin As String Dim Fichier As String Application.ScreenUpdating = False 'j'initialize le premier classeur ici: tableau suivi action en retard Set Wb1 = ThisWorkbook 'j'indique le chemin et le nom du deuxième classeur Chemin = "H:" Fichier = Chemin & TextBox1.Text & ".xls" On Error Resume Next 'je vérifie si le classeur est présent Set Wb = GetObject(Fichier) If Err <> 0 Then MsgBox "Fichier Absent": Exit Sub 'j'ouvre le classeur: plan d'actions SMQ Workbooks.Open Fichier 'j'initialize le deuxieme classeur Set Wb2 = ActiveWorkbook Lig = Wb1.Sheets("Feuil1").[D65536].End(3).Row + 1 With Wb2.Sheets("Feuil1") For k = 10 To .[A65536].End(3).Row If .Range("A" & k) <> "" Then 'si les conditions sont remplies alors je vais à extract If Range("W10").Value = "" And Range("U10").Value < Date Then 'Appel de la fonction extract Extr = extract(Lig, k) Lig = Lig + 1 End If If Range("U10").Value = "" Then 'Appel de la fonction extract Extr = extract(Lig, k) Lig = Lig + 1 End If If Range("W10").Value <> "" And Range("M10").Value "Audit blanc ISO" Or Range("M10").Value "Audit blanc IFS" Or Range("M10").Value = "Audit blanc BRC" Or Range("M10").Value = "Audit interne ISO" Or Range("M10").Value = "Audit interne IFS" Or Range("M10").Value = "Audit interne BRC" Or Range("M10").Value = "Audit Certif ISO" Or Range("M10").Value = "Audit Certif IFS" Or Range("M10").Value = "Audit Certif BRC" And Range("AD10").Value = "" And Range("AA10").Value < Date Then 'Appel de la fonction extract Extr = extract(Lig, k) Lig = Lig + 1 End If If Range("W10").Value <> "" And Range("M10").Value "Audit blanc ISO" Or Range("M10").Value "Audit blanc IFS" Or Range("M10").Value = "Audit blanc BRC" Or Range("M10").Value = "Audit interne ISO" Or Range("M10").Value = "Audit interne IFS" Or Range("M10").Value = "Audit interne BRC" Or Range("M10").Value = "Audit Certif ISO" Or Range("M10").Value = "Audit Certif IFS" Or Range("M10").Value = "Audit Certif BRC" And Range("AA10").Value = "" Then 'Appel de la fonction extract Extr = extract(Lig, k) Lig = Lig + 1 End If 'Je pense que c'est ton Exit sub qui doit géner... 'Exit Sub ' Si aucune condition vraie... alors quitter la macro End If Next k End With 'je referme le classeur plan d'action sans sauvegarder Wb2.Close 'j'active le classeur tableau suivi Wb1.Sheets("Feuil1").Activate Application.ScreenUpdating = True 'je referme l'userform Unload UserForm1 End Sub
' Code à placer dans le module principale ' déclaration des variables en "Public" pour pouvoir les utiliser dans TOUT le code Public Wb1 As Workbook Public Wb2 As Workbook Public Wb As Workbook Sub main() Load userform1 userform1.Show End Sub Function extract(Ligne1ne1, Ligne2) '--------------------------------------------------------------------- ' Fonction Extract. ' En argument, on passe Ligne1 (= Lig) et Ligne2 (=K) '--------------------------------------------------------------------- Wb1.Sheets("Feuil1").Range("D" & ligne1).Value = .Range("T" & Ligne2).Value Wb1.Sheets("Feuil1").Range("F" & ligne1).Value = .Range("A" & Ligne2).Value Wb1.Sheets("Feuil1").Range("G" & ligne1).Value = .Range("G" & Ligne2).Value Wb1.Sheets("Feuil1").Range("H" & ligne1).Value = .Range("P" & Ligne2).Value Wb1.Sheets("Feuil1").Range("I" & ligne1).Value = .Range("M" & Ligne2).Value Wb1.Sheets("Feuil1").Range("J" & ligne1).Value = .Range("H" & Ligne2).Value Wb1.Sheets("Feuil1").Range("K" & ligne1).Value = .Range("O" & Ligne2).Value End Function
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionWb1.Sheets("Feuil1").Range("D" & ligne1).Value = Wb2.Sheets("Feuil1").Range("T" & Ligne2).Value
Erreur de compilation : Seuls des commentaires peuvent apparaître après End Sub, End Fonction,..
Public Wb1 As Workbook Public Wb2 As Workbook Public Wb As Workbook
Erreur de compilation : Erreur de syntaxe
If Range("W10").Value = "" And Range("U10").Value < Date Then 'Appel de la fonction extract Extr = extract(Lig, k) Lig = Lig + 1 Else If Range("U10").Value = "" Then 'Appel de la fonction extract Extr = extract(Lig, k) Lig = Lig + 1 Else If Range("W10").Value <> "" And Range("M10").Value "Audit blanc ISO" Or Range("M10").Value "Audit blanc IFS" Or Range("M10").Value = "Audit blanc BRC" Or Range("M10").Value = "Audit interne ISO" Or Range("M10").Value = "Audit interne IFS" Or Range("M10").Value = "Audit interne BRC" Or Range("M10").Value = "Audit Certif ISO" Or Range("M10").Value = "Audit Certif IFS" Or Range("M10").Value = "Audit Certif BRC" And Range("AD10").Value = "" And Range("AA10").Value < Date Then 'Appel de la fonction extract Extr = extract(Lig, k) Lig = Lig + 1 Else If Range("W10").Value <> "" And Range("M10").Value "Audit blanc ISO" Or Range("M10").Value "Audit blanc IFS" Or Range("M10").Value = "Audit blanc BRC" Or Range("M10").Value = "Audit interne ISO" Or Range("M10").Value = "Audit interne IFS" Or Range("M10").Value = "Audit interne BRC" Or Range("M10").Value = "Audit Certif ISO" Or Range("M10").Value = "Audit Certif IFS" Or Range("M10").Value = "Audit Certif BRC" And Range("AA10").Value = "" Then 'Appel de la fonction extract Extr = extract(Lig, k) Lig = Lig + 1 End If
Bonjour Jordane et merci de ta réponse,.
Apparemmnent et étant novice en VBA il m'est très difficile de re écrire mon code avec tes explications
Pour les And et Or, là dsl mais sur le pc du boulot je ne peux pas procéder comme tu dis en faisant F1 car les fichiers d'aide sont manquants.