1 pièce(s) jointe(s)
Comment créer un tableau à dimension
Bonjour
Je suis novice sur la programmation VBA.
Objectif :
J'ai crée une macro VBA dont le but est de parcourir chaque fichier Excel .
L'application lit le contenu de chaque fichier receptionnée . Elle en extrait quelques informations d'un onglet dont elle en a besoin . Cet extraction se fait sous forme tabulaire.
Problematique :
Je vous ai joins un fichier excel qui correspond à un exemple de fichier.
Sur ce fichier contient un exemple du tableau de restitution que je souhaite obtenir et l'exemple de tableau de restitution de ce que j'obtiens.
Ma solution
L'algoritme que je souhaite mettre en place est :
' compter le nombre de cellule non vides dans la ligne correspondante
--> j'ai pu le faire par :
nbNonEmptyCell = WorksheetFunction.CountA(Worksheets(Current.Name).Rows(6))
' Constituer un tableau à 2 dimensions :
tableau de valeur : tab2D [ G, Projet 1; I,Projet2]
ceci je ne sais pas comment le faire en vba
' Faire la boucle qui commence par G et qui finit par le nombre d'element dans le tableau de valeur tab2D
' appeller la methode Transpose
voici le code que réaliser :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
Sub Transpose(SheetName As String)
Dim a As Long
Dim b As Long
Dim i As Long
a = Sheets(SheetName).UsedRange.Rows.Count
b = 7
For i = 1 To a Step 20
Sheets(SheetName).Range("G" & i & ":G" & i + 20).Copy
Windows("Exple").Activate
Sheets("Feuil2").Select
Sheets("Feuil2").Range("b" & b).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
b = b + 1
Next i
End Sub |
J'ai un probleme c'est que le code ne permet que de lire la premiere colonne or j'ai des colonnes alternée
J'espere que j'ai été à peu près clair .
J'ai quelque probleme pour finir mon application mais je n'arrive pas à trouver le bout du chemin Pouvez vous m'aider ?
Merci d'avance
Stardeus.
PS : Je vous joins le fichier excel de référence
besoin d'aide sur un algorithme pour l'alimenter des données
Bonjour
Je souhaiterai avoir un avis sur l'algo et savoir son niveau de faisabilité.
Voici ce que je compte faire
Je crée un tabcolonne("G,H,-->"ZZ")
Compter le nombre de cellule non vide ( voir exple : y en a 3)
Insérer les valeurs TabProjet (0,numProj1,NumProj2)
pour i =1 jusqua tabProjet.Count
lance la methodologie transpose
'ici j'ai un probleme , l'insertion ne se fait de la donnée ne se fait que sur une seule colonne or je souhaite inserer des données qui se situe dans la premiere colonne mais aussi dans la 2 colonne ( je me demande si c'est réalisable ce cas la pour des colonnes fusionnées )
fin de la boucle pour
Pourriez vous me dire si mon algo est correct si jamais ce n'est pas le cas ou mon explication n'est pas claire faites moi signe
merci d'avance
stardeus
Lecture sur les cellules fusionnées
Bonsoir ,
J'ai une colonne fusionnée en 2 colonnes
Lorsque je souhaite lire le contenu de la colonne fusionnée j'obtiens ;
Valeur de la cellule : NomProjA ,
Valeur de la cellule : ,
Valeur de la cellule : NomProjB,
Valeur de la cellule : ,
Code:
1 2 3 4 5 6 7
|
'Créer un tableau contenant les valeurs
Dim ObjCell As Object
For Each ObjCell In Range("G1:J65535").Cells
ObjCell.Value = CStr(ObjCell.Value)
MsgBox ("valeur de la cellule : " + Cstr(ObjCell.Value))
Next |
J'essaie de lire le contenu de la colonne et non de la ligne mais je ne parviens pas à le faire
Savez vous comment je peux faire pour lire le contenu d'une colonne par colonne et non de ligne par ligne
car ensuite je tenterai de récupere le contenu de la cellule pour la replacer dans une autre tableau
Merci d'avance
stardeus
Utiliser des variables sur la fonction prédéfini Union
Bonjour
Je voudrais savoir s'il etait possible de positionner des variable sur la fonction Union .
Voici mon idée:
En effet j'ai stocké dans un tableau le nombre de cellule qui n'etait pas vide.
Ce tableau affecte les lettres correspondant au cellule non nulle.
Pour restituer mes infos, j'effectue cette methode
Code:
1 2 3 4 5
| i=2
For Each C In Union([G1:G18]:[H4:H8]).SpecialCells(xlCellTypeConstants, 23)
i = i + 1
Cells(nbligne + 1, i) = C
Next C |
ce que j'aimerai faire , c'est d'englober ce bout de code dans une boucle
pour qu'il réalise un truc de ce genre :
Code:
1 2 3 4 5 6 7
| for cpt = 0 to nbcolonnenonvide
i=2
For Each C In Union([ montableau(cpt) 1:montableau(cpt)18]:[montableau(cpt+1) 4:montableau(cpt+1)8]).SpecialCells(xlCellTypeConstants, 23)
i = i + 1
Cells(nbligne + 1, i) = C
Next C
next cpt |
par exemple
si j'ai ma variable nbcolonnenonvide=12
alors 12 correspond à la lettre L
Donc la methode doit parcourir d'abord
Code:
Union([G1:G18]:[H4:H8]).SpecialCells(xlCellTypeConstants, 23)
ensuite
Code:
Union([I1:I18]:[J4:J8]).SpecialCells(xlCellTypeConstants, 23)
et enfin
Code:
Union([K1:K18]:[L4:L8]).SpecialCells(xlCellTypeConstants, 23)
Merci pour votre aide
stardeus