Bonjour à tous !
J'ai un petit souci de code VBA
Après plusieurs recherches, j'ai trouvé plusieurs choses :
- Trouver la première cellule vide dans une colonne
- Trouver la première ligne vide (j'ai pas réussi )
Sauf que c'est pas ce que je cherche exactement.
Je voudrais que mon code détecte la première ligne vide d'un autre fichier excel mais uniquement sur les colonnes A, B et C.
Une fois trouvée, je voudrais y copier une plage (de 1, 2 ou 3 colonnes sur plusieurs lignes) depuis mon fichier excel en cours.
Après plusieurs essais, j'ai eu droit à plusieurs "problèmes" :
- Le code ne tenait compte que de la première colonne
- Le code copiait des #NA sur les cellules vides à l'origine
- Il ne se passe rien
Le seul qui fonctionne mais uniquement sur la colonne A c'est celui-là :
Quelqu'un a-t-il une idée ? Ci-dessous un extrait du code :
Merci d'avance pour vos réponses
J'ai un petit souci de code VBA
Après plusieurs recherches, j'ai trouvé plusieurs choses :
- Trouver la première cellule vide dans une colonne
- Trouver la première ligne vide (j'ai pas réussi )
Sauf que c'est pas ce que je cherche exactement.
Je voudrais que mon code détecte la première ligne vide d'un autre fichier excel mais uniquement sur les colonnes A, B et C.
Une fois trouvée, je voudrais y copier une plage (de 1, 2 ou 3 colonnes sur plusieurs lignes) depuis mon fichier excel en cours.
Après plusieurs essais, j'ai eu droit à plusieurs "problèmes" :
- Le code ne tenait compte que de la première colonne
- Le code copiait des #NA sur les cellules vides à l'origine
- Il ne se passe rien
Code:
Cells(Range("A1000:C1000").End(xlUp).Row, 1) = ThisWorkbook.Sheets("FicheB203").Range("T14:U18").Value
Le seul qui fonctionne mais uniquement sur la colonne A c'est celui-là :
Code:
Range("A1000").End(xlUp).Offset(1, 0) = ThisWorkbook.Sheets("FicheB203").Range("T14").Value
Quelqu'un a-t-il une idée ? Ci-dessous un extrait du code :
Code:
Private Sub CdeButOK_Click()
Dim ccb1 As Integer 'déclare la variable ccb1 (Colonne ComboBox1)
Dim P As Integer 'déclare la variable P (pourrait être déclarée comme Byte ?)
Dim col As Integer 'déclare la variable col (COLonne)
Dim cb1 As String 'déclare la variable cb1 (ComboBox1)
Dim cb3 As String 'déclare la variable cb3 (ComboBox3)
Dim ShtS As Worksheet 'déclare la variable ShtS
cb1 = ComboBox1.Value 'définit la variable cb1
Set ShtS = Sheets("Polyvalence") 'définit la variable ShtS
ccb1 = ShtS.Range("C1:AO1").Find(What:=cb1).Column 'définit la colonne Ccb1
'P = 0, 1 ou 2
cb3 = ComboBox3.Value 'définit la variable cb3
For n = 3 To ShtS.Range("A65536").End(xlUp).Row
If ShtS.Range("A" & n) = cb3 Then cb3n = n
Next n
If ComboBox2.Value = "Conducteur" Then 'condition : si la valweur de la ComboBox2 est "Chef"
P = 0 'définit la variable P
col = ccb1 + P 'définit la colone col
ShtS.Cells(CInt(cb3n), col) = Former.Label2.Caption 'place dans la cellule la caption du Label2
End If 'fin de la condition
Dim Wk As Workbook
Dim Ws As Worksheet
MyPath = ThisWorkbook.Path
Dim fso As Object, x As Boolean
Set fso = CreateObject("Scripting.FileSystemObject") 'vérifie si un fichier porte le nom de la personne formée
x = fso.FileExists(MyPath & "\" & cb3 & ".xlsx")
If x = True Then 'si oui, on ouvre ce fichier
Set Wk = Workbooks.Open(Filename:=ThisWorkbook.Path & "\" & cb3 & ".xlsx")
Wk.Activate
For Each Ws In ActiveWorkbook.Worksheets 'on vérifie si une feuille porte le nom de la machine sélectionnée
If Ws.Name = cb1 Then 'si oui, on ajoute la sélection sur cette feuille
If ChkB11 = True Then
Cells(Range("A1000:C1000").End(xlUp).Row, 1) = ThisWorkbook.Sheets("FicheB203").Range("T14:U18").Value
End If
Else 'si non, on créé une feuille avec le nom de la machine et on ajoute la sélection
Sheets.Add
ActiveSheet.Name = cb1
If ChkB11 = True Then
'même opération
End If
End If
Exit For
Next
ActiveWorkbook.Save 'on sauvegarde le fichier
Else 'si aucun fichier n'existe sous le nom de cette personne, on créé : un classeur,une feuille et on ajoute la sélection
Workbooks.Add
Sheets.Add
ActiveSheet.Name = cb1
Worksheets(cb1).Range("A1") = ThisWorkbook.Sheets("FicheB203").Range("T14:U18").Value
ActiveWorkbook.SaveAs MyPath & "\" & cb3 & ".xlsx" 'on sauvegarde le fichier dans le dossier contenant Compétence Perso
End If
ActiveWorkbook.Close 'on ferme le fichier
Unload Me 'on ferme la fenêtre et affiche l'USF Formations
Formations.Show
End Sub
Merci d'avance pour vos réponses