creation variable vba

MathildeQ

XLDnaute Nouveau
Bonjour à tous.
J'expose mon souci.
Je créé une variable qui s'appelle "caisse1" caisse2.... car il y a plusieurs numéro de caisse pour une région.
Ensuite j'ouvre un fichier par caisse que je copie dans le fichier de la région correspondant.
Mon problème est que lorsqu'une région à 4 caisses par exemple et la suivante seulement 2 caisses et bien il garde en mémoire le numéro de la caisse 3 et 4 de la région précédente.
Je pensais nommer la variable sinon
Code:
caisse & j & 1
par exemple mais cela ne fonctionne pas.
Je fais donc appel à votre aide. Je vous met le code ci dessous:

Code:
Sub creation_region()
mois = "12"
mois2 = "Décembre"
repert = "D:\repertoire\"

   For i = 1 To 26
        j = Cells(i, 2).Value
        Select Case j
            Case "01"
                nom = "Guadeloupe"
                   caisse1 = "971"
       
            Case "11"
                   nom = "Ile de France"
            caisse1 = "951"
            caisse2 = "941"
            caisse3 = "931"
            caisse4 = "921"
            caisse5 = "911"
            caisse6 = "781"
            caisse7 = "771"
            caisse8 = "751"
Case "21"
  nom = "Champagne Ardenne"
caisse1 = "521"
caisse2 = "511"
caisse3 = "101"
caisse4 = "081"
End Select
                     
           
    Workbooks.Open (repert & "cpam" & caisse1 & ".XLS"), UpdateLinks:=0
       Sheets("feuil" & caisse1).Select
    Sheets("feuil" & caisse1).Copy After:=Workbooks("region- " & nom & ".xls"). _
        Sheets(3)
        Cells.Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        
       Windows("feuil" & caisse1 & ".XLS").Activate
           ActiveWindow.Close False
      
      Set filesys = CreateObject("Scripting.FileSystemObject")
  
  If filesys.FileExists(repert & " feuil" & caisse2 & ".XLS") = True Then
Workbooks.Open (repert & " feuil" & caisse2 & ".XLS"), UpdateLinks:=0
      Sheets("feuil" & caisse2).Select
    Sheets("feuil" & caisse2).Copy After:=Workbooks("region- " & nom & ".xls"). _
        Sheets(3)
          Cells.Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
             Windows("feuil" & caisse2 & ".XLS").Activate
           ActiveWindow.Close False
End If
  
Next i
End Sub

Merci par avance
Cordialement,
Mathilde
 

tototiti2008

XLDnaute Barbatruc
Re : creation variable vba

Bonjour Mathilde,

peut être comme ça :

Code:
Select Case j
            Case "01"
                nom = "Guadeloupe"
                   caisse1 = "971"
            caisse2 = ""
            caisse3 = ""
            caisse4 = ""
            caisse5 = ""
            caisse6 = ""
            caisse7 = ""
            caisse8 = ""

       
            Case "11"
                   nom = "Ile de France"
            caisse1 = "951"
            caisse2 = "941"
            caisse3 = "931"
            caisse4 = "921"
            caisse5 = "911"
            caisse6 = "781"
            caisse7 = "771"
            caisse8 = "751"
Case "21"
  nom = "Champagne Ardenne"
caisse1 = "521"
caisse2 = "511"
caisse3 = "101"
caisse4 = "081"
            caisse5 = ""
            caisse6 = ""
            caisse7 = ""
            caisse8 = ""

End Select

Mais sinon l'utilisation de tableaux pourrait être utile dans ton cas

Code:
Dim Caisses() as String
...
Redim Caisses(1 to 8)

Mais l'aide de VBA sur les tableaux t'aidera certainement plus ;)
 

youky(BJ)

XLDnaute Barbatruc
Re : creation variable vba

Bonjour Tototiti, Mathilde,
Comme j'ai fais en tableau je l'envoie pour pas passer à coté
Avec ce code en bas il est facile de jongler avec les chiffres ou boucles.
A+
Code:
lieu = Array("", "Guadeloupe", "Ile de France", "Champagne Ardenne")
Dim nc(10, 10) As String
'"Guadeloupe"
nc(1, 1) = "971"

'"Ile de France"
nc(2, 1) = "951"
nc(2, 2) = "941"
nc(2, 3) = "931"
nc(2, 4) = "921"
nc(2, 5) = "911"
nc(2, 6) = "781"
nc(2, 7) = "771"
nc(2, 8) = "751"
'"Champagne Ardenne"
nc(3, 1) = "521"
nc(3, 2) = "511"
nc(3, 3) = "101"
nc(3, 4) = "081"

MsgBox lieu(2) 'lieu(1)="Guadeloupe"2 est IleFrance
MsgBox nc(2, 6)'6 est la caisse6
 

Discussions similaires

Réponses
2
Affichages
953