Problème de variable

Bonjour,

Je patauge depuis ce matin sur un bout de code sans trouver de solution.

Le but est de vérifier dans un premier temps que certains champs de la ligne active ne soit pas vide, puis de rechercher dans un dossier s'il y a une occurrence par rapport à la valeur d'une cellule pour trouver un dossier, et à l'intérieur de ce dossier, copier un fichier en le renommant vis à vis de certains champs.

Actuellement cela bloque sur la vérification des champs. Je ne comprends pas pourquoi car j'utilise déjà ce code sur ma feuil1 avec succès.

Info : Ma Feuil2 s'appelle Liste Affaires

ACR a bien la bonne valeur, par contre Feuil2.Cells(ACR, 3), Feuil2.Cells(ACR, 5) et Feuil2.Cells(ACR, 7) sont toujours detectés comme vide.

Voici le code :

Sub Copie_fichier()

' Copie_fichier Macro
' Copie du fichier Devis modèle pour une nouvelle affaire
    Dim fs1 As Object
    Dim stRep As String
    Dim stFichier As String

            With Feuil2
                ACR = ActiveCell.Row
                    If Feuil2.Cells(ACR, 3) = "" Or Feuil2.Cells(ACR, 5) = "" Or Feuil2.Cells(ACR, 7) = "" Then
                        MsgBox ("Selectionnez une ligne valide")
                    Else
                        stRep = "C:\Users\Lou\Google Drive\Projets\"
                        stFichier = Dir(stRep & "*" & ThisWorkbook.Sheets("Liste Affaires").Cells(ACR, 5) & "*")

                        If stFichier <> "" Then
                        MsgBox "Fichier trouvé : " & vbCrLf & stRep & stFichier
                        Else
                        MsgBox "Pas de fichier avec filtre : " & "*" & ThisWorkbook.Sheets("Liste Affaires").Cells(3, 6) & "*"
                        End If

                        'If "Liste Affaires".Cells(AC1, 3) = "" Then
                        '    quoi = .Cells(AC1, 2) & " - " & .Cells(AC1, 9) & " " & .Cells(AC1, 11) & " " & .Cells(AC1, 10) & " - " & .Cells(AC1, 7)
                        'Else
                        '    quoi = .Cells(AC1, 2) & " - " & .Cells(AC1, 3) & " - " & .Cells(AC1, 7)
                        'End If

                        'If (Dir("C:\Users\Lou\Google Drive\Projets\" & quoi, vbDirectory)) <> "" Then
                        '    MsgBox ("Le dossier existe déjà !")
                        'Else
                        '    Set fs1 = CreateObject("Scripting.FileSystemObject")
                        '    fs1.CopyFolder "C:\Users\Lou\Google Drive\Projets\_Création\Nouveau_client", "C:\Users\Lou\Google Drive\Projets\"

                        '    Name "C:\Users\Lou\Google Drive\Projets\Nouveau_client" As "C:\Users\Lou\Google Drive\Projets\" & quoi
                         '   MsgBox ("Le dossier " & quoi & " a bien été crée")

                       ' End If
                    End If
            End With

End Sub 

Bonjour

Pour comprendre un peu plus ton fichier va être indispensable (à moins qu'un autre membre t'apporte la solution)

Moi j'ai une question

Quand tu lances la macro, tu es bien dans page "Liste Affaires" ?

A suivre

Bonjour,

Oui, je suis bien dans le bon onglet.

Voici mon fichier :

Merci !

Bonjour

Caindymion a écrit :

Info : Ma Feuil2 s'appelle Liste Affaires

Pas dans le fichier que tu as fourni

C'est Feuil3 qui est le CodeName de la feuille "Liste Affaires"

Tu peux simplifier un peu le code

Sub Copie_fichier()
' Copie_fichier Macro
' Copie du fichier Devis modèle pour une nouvelle affaire
Dim fs1 As Object
Dim stRep As String
Dim stFichier As String

  With Feuil3
    ACR = ActiveCell.Row
    MsgBox .Cells(ACR, 5)
    If .Cells(ACR, 5) = "" Or .Cells(ACR, 7) = "" Or .Cells(ACR, 3) = "" Then
      MsgBox ("Selectionnez une ligne valide")
    Else
      stRep = "C:\Users\Lou\Google Drive\Projets\"
      stFichier = Dir(stRep & "*" & .Cells(ACR, 5) & "*")

      If stFichier <> "" Then
        MsgBox "Fichier trouvé : " & vbCrLf & stRep & stFichier
      Else
        MsgBox "Pas de fichier avec filtre : " & "*" & .Cells(3, 6) & "*"
      End If

      'If "Liste Affaires".Cells(AC1, 3) = "" Then
      '    quoi = .Cells(AC1, 2) & " - " & .Cells(AC1, 9) & " " & .Cells(AC1, 11) & " " & .Cells(AC1, 10) & " - " & .Cells(AC1, 7)
      'Else
      '    quoi = .Cells(AC1, 2) & " - " & .Cells(AC1, 3) & " - " & .Cells(AC1, 7)
      'End If

      'If (Dir("C:\Users\Lou\Google Drive\Projets\" & quoi, vbDirectory)) <> "" Then
      '    MsgBox ("Le dossier existe déjà !")
      'Else
      '    Set fs1 = CreateObject("Scripting.FileSystemObject")
      '    fs1.CopyFolder "C:\Users\Lou\Google Drive\Projets\_Création\Nouveau_client", "C:\Users\Lou\Google Drive\Projets\"

      '    Name "C:\Users\Lou\Google Drive\Projets\Nouveau_client" As "C:\Users\Lou\Google Drive\Projets\" & quoi
      '   MsgBox ("Le dossier " & quoi & " a bien été crée")

      ' End If
    End If
  End With

End Sub

Merci, l'erreur venait du fait que je ne cherchait pas dans la bonne feuille...

Je me doutait que c'était simple mais impossible de trouver, encore merci !

Rechercher des sujets similaires à "probleme variable"