Décaler colonne

Fermé
loupti Messages postés 30 Date d'inscription lundi 23 février 2015 Statut Membre Dernière intervention 13 mai 2015 - Modifié par loupti le 13/05/2015 à 11:02
loupti Messages postés 30 Date d'inscription lundi 23 février 2015 Statut Membre Dernière intervention 13 mai 2015 - 13 mai 2015 à 15:21
Bonjour,

Je souhaiterai faire une boucle afin de décaler des informations, entrées sur un userform, d'une colonne à chaque fois qu'une nouvelle liste d'information est communiquée.

Actuellement j'ai le code suivant :

Private Sub BuOK_Click()
Dim feuille2 As Worksheet
UsfOrigine3 = Me.Name
    'on créé la feuille "Information générales du fichier" si elle n'existe pas déjà
    Set feuille2 = Creer_Feuil(xlBook, "Presentation Information")
    'on y stocke toutes les infos saisies
    xlApp.Visible = True
    With feuille2
        .[A1] = TbSection
        .[A2] = TbSeqNumber
        .[A3] = TbRevision
        .[A4] = CbRevision
        .[A5] = TbDate
        .[A6] = TbDescription
        .[A7] = TbDrawn
        .[A8] = TbChecked
        .[A9] = TbApproved
    End With
    'Enregistrement du classeur "Projet" dans répertoir D:\DATA\c.beguin\Documents
    xlBook.SaveAs Filename:=monRep & Nom_Proj, FileFormat:=xlExcel8
        
    Unload Me
End Sub


Mais à chaque fois qu'on entre une nouvelle liste d'information, cela écrase les informations déja enregistrées sur ma feuille excel.

j'ai trouvé que pour décaler, il faut utiliser la fonction offset et pour sélectionner une colonne, la fonction Range (A").select ou Colums("A"). Select
Mais ce que j'aimerai c'est que la première liste d'information soit mise en colonne A, la seconde en B ....

Je suis débutante sur la programmation, c'est pourquoi je n'arrive pas à réaliser ce que j'aimerai faire ...

Merci d'avance

Cordialement,

loupti

A voir également:

3 réponses

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
13 mai 2015 à 11:48
Bonjour Loupti, bonjour le forum,

Peut-être comme ça :

Private Sub BuOK_Click()
Dim feuille2 As Worksheet
Dim DEST As Range

UsfOrigine3 = Me.Name
'on créé la feuille "Information générales du fichier" si elle n'existe pas déjà
Set feuille2 = Creer_Feuil(xlBook, "Presentation Information")
'on y stocke toutes les infos saisies
xlApp.Visible = True
With feuille2
    Set DEST = IIf(.Range("A1").Value = "", .Range("A1"), .Cells(1, Application.Columns.Count).End(xlToLeft).Offset(0, 1))
    DEST.Value = TbSection
    DEST.Offset(1, 0).Value = TbSeqNumber
    DEST.Offset(2, 0).Value = TbRevision
    DEST.Offset(3, 0).Value = CbRevision
    DEST.Offset(4, 0).Value = TbDate
    DEST.Offset(5, 0).Value = TbDescription
    DEST.Offset(6, 0).Value = TbDrawn
    DEST.Offset(7, 0).Value = TbChecked
    DEST.Offset(8, 0).Value = TbApproved
End With
'Enregistrement du classeur "Projet" dans répertoir D:\DATA\c.beguin\Documents
xlBook.SaveAs Filename:=monRep & Nom_Proj, FileFormat:=xlExcel8
    
Unload Me
End Sub

1
loupti Messages postés 30 Date d'inscription lundi 23 février 2015 Statut Membre Dernière intervention 13 mai 2015
13 mai 2015 à 11:55
Merci ThauTheme, je vais tester cela :)
0
loupti Messages postés 30 Date d'inscription lundi 23 février 2015 Statut Membre Dernière intervention 13 mai 2015
13 mai 2015 à 15:21
J'ai tété le code que vous m'avez indiqué mais j'ai une erreur d'exécution quand je fais le test au niveau de cette ligne de code :
Set DEST = IIf(.Range("A1").Value = "", .Range("A1"), .Cells(1, Application.Columns.Count).End(xlToLeft).Offset(0, 1))


Ma question est surement bête mais que veux dire erreur définie par l'application ou par l'objet ?
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 306
Modifié par michel_m le 13/05/2015 à 11:49
Bonjour
à adapter à ton contexte
col est la A° colonne vide
With Sheets(2)
col = IIf(Range("A1") = "", 1, .Rows(1).Find("", .Range("A1")).Column)
End With
.cells(1,col)="zaza"
etc


Michel
0
loupti Messages postés 30 Date d'inscription lundi 23 février 2015 Statut Membre Dernière intervention 13 mai 2015
13 mai 2015 à 12:04
Merci Michel_m, avec ta proposition de code du coup ça donne quelque chose comme ça ?

Private Sub BuOK_Click()
Dim feuille2 As Worksheet
Dim col as Integer
UsfOrigine3 = Me.Name
    'on créé la feuille "Information générales du fichier" si elle n'existe pas déjà
    Set feuille2 = Creer_Feuil(xlBook, "Presentation Information")
    'on y stocke toutes les infos saisies
    xlApp.Visible = True

With feuille2
col = IIf(Range("A1") = "", 1, .Rows(1).Find("", .Range("A1")).Column)
col = IIf(Range("A2") = "", 1, .Rows(1).Find("", .Range("A2")).Column)
col = IIf(Range("A3") = "", 1, .Rows(1).Find("", .Range("A3")).Column)
col = IIf(Range("A4") = "", 1, .Rows(1).Find("", .Range("A4")).Column)
col = IIf(Range("A5") = "", 1, .Rows(1).Find("", .Range("A5")).Column)
col = IIf(Range("A6") = "", 1, .Rows(1).Find("", .Range("A6")).Column)
col = IIf(Range("A7") = "", 1, .Rows(1).Find("", .Range("A7")).Column)
col = IIf(Range("A8") = "", 1, .Rows(1).Find("", .Range("A8")).Column)
col = IIf(Range("A9") = "", 1, .Rows(1).Find("", .Range("A9")).Column)
End With

.cells(1,col)=TbSection
.cells(2,col)=TbSeqNumber.
.cells(3,col)=TbRevision
.cells(4,col)=CbRevision
.cells(5,col)=TbDate
.cells(6,col)=TbDescription
.cells(7,col)=TbDrawn
.cells(8,col)=TbChecked
.cells(1,col)=TbApproved

    'Enregistrement du classeur "Projet" dans répertoir D:\DATA\c.beugin\Documents
    xlBook.SaveAs Filename:=monRep & Nom_Proj, FileFormat:=xlExcel8
        
    Unload Me
End Sub
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 306
13 mai 2015 à 14:17
With feuille2
col = IIf(.Range("A1") = "", 1, .Rows(1).Find("", .Range("A1")).Column)
End with

n'oublie pas le point devant range
0
loupti Messages postés 30 Date d'inscription lundi 23 février 2015 Statut Membre Dernière intervention 13 mai 2015
13 mai 2015 à 14:24
ah oui mince, je l'avais oublié ...

J'ai un problème quand je teste ce code, j'ai une erreur, ça me met erreur de compilation ... "référence incorrecte ou non qualifiée"
0
loupti Messages postés 30 Date d'inscription lundi 23 février 2015 Statut Membre Dernière intervention 13 mai 2015
13 mai 2015 à 14:26
Voici le code que j'ai écrit ... J'ai du faire une erreur

Private Sub BuOK_Click()
Dim feuille2 As Worksheet
Dim col As Integer
UsfOrigine3 = Me.Name
    'on créé la feuille "Information générales du fichier" si elle n'existe pas déjà
    Set feuille2 = Creer_Feuil(xlBook, "Presentation Information")
    'on y stocke toutes les infos saisies
    xlApp.Visible = True
    
With feuille2
    col = IIf(.Range("A1") = "", 1, .Rows(1).Find("", .Range("A1")).Column)
    col = IIf(.Range("A2") = "", 1, .Rows(2).Find("", .Range("A2")).Column)
    col = IIf(.Range("A3") = "", 1, .Rows(3).Find("", .Range("A3")).Column)
    col = IIf(.Range("A4") = "", 1, .Rows(4).Find("", .Range("A4")).Column)
    col = IIf(.Range("A5") = "", 1, .Rows(5).Find("", .Range("A5")).Column)
    col = IIf(.Range("A6") = "", 1, .Rows(6).Find("", .Range("A6")).Column)
    col = IIf(.Range("A7") = "", 1, .Rows(7).Find("", .Range("A7")).Column)
    col = IIf(.Range("A8") = "", 1, .Rows(8).Find("", .Range("A8")).Column)
    col = IIf(.Range("A9") = "", 1, .Rows(9).Find("", .Range("A9")).Column)
End With

.Cells(1, col) = TbSection
.Cells(2, col) = TbSeqNumber
.Cells(3, col) = TbRevision
.Cells(4, col) = CbRevision
.Cells(5, col) = TbDate
.Cells(6, col) = TbDescription
.Cells(7, col) = TbDrawn
.Cells(8, col) = TbChecked
.Cells(9, col) = TbApproved

'Enregistrement du classeur "Projet" dans répertoir D:\DATA\c.beugin\Documents
    xlBook.SaveAs Filename:=monRep & Nom_Proj, FileFormat:=xlExcel8
        
    Unload Me
End Sub

0
loupti Messages postés 30 Date d'inscription lundi 23 février 2015 Statut Membre Dernière intervention 13 mai 2015
13 mai 2015 à 14:30


voici une capture écran de l'erreur
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 306
Modifié par michel_m le 13/05/2015 à 14:38
tu n'es pas dans un bloc feuille
le point indique l'appatenance à un objet ( with;;;end with

ET TU N'AS BESOIN QUE D'UNE LIGNE COL=IIF...
si je te donne des modifs que tu n'appliques pas, il est inutile qu'on passe du temps à essayer de t'aider...
0
loupti Messages postés 30 Date d'inscription lundi 23 février 2015 Statut Membre Dernière intervention 13 mai 2015
13 mai 2015 à 14:40
Désolée je n'avais pas compris ...
et j'ai également besoin que d'une seule ligne : . Cells(1, col) = TbSection
Ou comme j'ai fait c'est bon ?
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 306
13 mai 2015 à 15:04
abandon...
0
loupti Messages postés 30 Date d'inscription lundi 23 février 2015 Statut Membre Dernière intervention 13 mai 2015
13 mai 2015 à 15:10
D'accord... Je suis débutante en programmation, désolée.

Merci pour vos conseils ...

Loupti
0